Redis的Bitmap如何使用


本文小编为大家详细介绍“Redis的Bitmap如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Redis的Bitmap如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。我们使用 SpringBoot2.2.1.RELEASE来搭建项目环境,直接在pom.xml中添加 redis 依赖如果我们的 redis 是默认配置,则可以不额外添加任何配置;也可以直接在application.yml配置中,如下bitmap 主要就三个操作命令,setbitgetbit以及bitcountsetbit,主要是指将某个索引,设置为 1(设置 0 表示抹去标记),基本语法如下对应的 SpringBoot 中,借助 RestTemplate 可以比较容易的实现,通常有两种写法,都可以上面两种写法的核心区别,就是 key 的序列化问题,第一种写法使用默认的 jdk 字符串序列化,和后面的getBytes()会有一些区别,关于这个,有兴趣的小伙伴可以看一下我之前的博文: RedisTemplate 配置与使用#序列化问题即getbit key index,如果返回 1,表示存在否则不存在即bitcount key,统计和前面的基本使用比较简单,在介绍 String 数据结构的时候也提过,我们重点需要关注的是 bitmap 的使用场景,它可以干嘛用,什么场景下使用它会有显著的优势日活统计点赞b 香港云主机loomfilter上面三个场景虽有相似之处,但实际的应用场景还是些许区别,接下来我们逐一进行说明统计应用或网站的日活,这个属于比较常见的 case 了,如果是用 redis 来做这个事情,首先我们最容易想到的是 Hash 结构,一般逻辑如下根据日期,设置 key,如今天为2020/10/13, 那么 key 可以为app_20_10_13其次当用户访问时,设置 field 为 userId, value 设置为 true判断日活则是统计 map 的个数hlen app_20_10_13上面这个逻辑有毛病么?当然没有问题,但是想一想,当我们的应用做的很 nb 的时候,每天的日活都是百万,千万级时,这个内存开销就有点吓人了接下来我们看一下 bitmap 可以怎么做同样根据日期设置 key当用户访问时,index 设置为 userId,setbit app_20_10_13 uesrId 1日活统计bitcount app_20_10_13简单对比一下上面两种方案数据量小时,且 userid 分布不均匀,小的为个位数,大的几千万,上亿这种,使用 bitmap 就有点亏了,因为 userId 作为 index,那么 bitmap 的长度就需要能容纳最大的 userId,但是实际日活又很小,说明 bitmap 中间有大量的空白数据反之当数据量很大时,比如百万/千万,userId 是连续递增的场景下,bitmap 的优势有两点:1.存储开销小, 2.统计总数快点赞的业务,最主要的一点是一个用户点赞过之后,就不能继续点赞了(当然某些业务场景除外),所以我们需要知道是否可以继续点赞上面这个 hash 当然也可以实现,我们这里则主要讨论一下 bitmap 的实现逻辑比如我们希望对一个文章进行点赞统计,那么我们根据文章 articleId 来生成 redisKey=like_1121,将 userId 作为 index首先是通过getbit like_1121 userId来判断是否点赞过,从而限制用户是否可以操作Hash 以及 bitmap 的选择和上面的考量范围差不多布隆过滤器可谓是大名鼎鼎了,我们这里简单的介绍一下这东西是啥玩意底层存储为一个 bitmap当来一个数据时,经过 n 个 hash 函数,得到 n 个数值将 hash 得到的 n 个数值,映射到 bitmap,标记对应的位置为 1如果来一个数据,通过 hash 计算之后,若这个 n 个值,对应的 bitmap 都是 1,那么表示这个数据可能存在;如果有一个不为 1,则表示这个数据一定不存在请注意:不存在时,是一定不存在;存在时,则不一定从上面的描述也知道,bloomfilter 的底层数据结构就是 bitmap,当然它的关键点在 hash 算法;根据它未命中时一定不存在的特性,非常适用于缓存击穿的问题解决体验说明Redis 的布隆过滤器主要针对>=4.0,通过插件的形式提供,项目源码地址为: https://github.com/RedisBloom/RedisBloom,下面根据 readme 的说明,简单的体验一下 redis 中 bloomfilter 的使用姿势bloomfilter 的使用比较简单,主要是两个命令bf.add添加元素,bf.exists判断是否存在,请注意它没有删除哦读到这里,这篇“Redis的Bitmap如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注开发云行业资讯频道。

相关推荐: 电脑键盘失灵怎么解决

这篇文章主要介绍“电脑键盘失灵怎么解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“电脑键盘失灵怎么解决”文章能帮助大家解决问题。1.出现键盘没有反应,首先要看一下是不是已经将键盘连接到电脑的接口上了。因为如果你曾打开…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 07/14 19:24
Next 07/14 19:24

相关推荐