【redis】三大特殊类型 bitmaps 位图

说明

bitmaps (位图)主要用来记录只有两种状态的事件。

比如:活跃|不活跃、登录|未登录、成功|失败

优势

  • 存储信息时通常可以极大地节省空间,仅使用 512 MB 内存就可以记住 40 亿用户的单个位信息。
  • 设置时候时间复杂度O(1)、读取时候时间复杂度O(n),操作是非常快的。
  • 二进制数据的存储,进行相关计算的时候非常快。
  • 方便扩容

使用

常用三个命令,就很简单,就直接举例子( 打卡 | 签到 )

setbit key offset value

  • offset:value 的偏移值,初始值为 0(看下面的图)
  • value:只能是 0 or 1 (这是二进制的位)
127.0.0.1:6379> SETBIT sign:Bob:202201 1 1 # 设置 这里的 1|0 是二进制
(integer) 0
127.0.0.1:6379> SETBIT sign:Bob:202201 2 1
(integer) 0
127.0.0.1:6379> SETBIT sign:Bob:202201 3 0
(integer) 0
127.0.0.1:6379> SETBIT sign:Bob:202201 4 1
(integer) 0
127.0.0.1:6379> SETBIT sign:Bob:202201 5 1
(integer) 0
127.0.0.1:6379> SETBIT sign:Bob:202201 6 1
(integer) 0
127.0.0.1:6379> SETBIT sign:Bob:202201 7 1
(integer) 0
127.0.0.1:6379> GETBIT sign:Bob:202201 2 # 获取某天状态
(integer) 1
127.0.0.1:6379> BITCOUNT sign:Bob:202201 # 统计 位 1 的数量
(integer) 6

mark

发表评论 / Comment

用心评论~