Bitmap介绍与使用
Bitmap介绍
Redis允许使用二进制数据的Key(binary keys) 和二进制数据的Value(binary values)。Bitmap就是二进制数据的value。Redis的 setbit(key, offset, value)操作对指定的key的value的指定偏移(offset)的位置1或0,时间复杂度是O(1)。
换算关系
8bit = 1b = 0.001kb
优势:
1.基于最小的单位bit进行存储,所以非常省空间。
2.设置时候时间复杂度O(1)、读取时候时间复杂度O(n),操作是非常快的
3.二进制数据的存储,进行相关计算的时候非常快
4.方便扩容
使用场景
1.用户签到
2.用户在线状态
3.视频的各种属性状态
4.统计活跃用户
Bitmap使用
SETBIT(key offset value) ##对key所储存的字符串值,设置或清除指定偏移量上的位(bit)。
offset是下标,value是0或者1,复杂度为O(1)
GETBIT(key offset) ##对key所储存的字符串值,获取指定偏移量上的位(bit)。
获得offset上的值,0或者1,复杂度为O(1)
BITCOUNT key [start end] ##统计指定key位置为1的数量
区间统计不建议使用,bitcount用的是byte来计算位数,其他setbit和getbit用的是bit
BITOP(operation destkey key [key ...]) ##对一个或多个保存二进制位的字符串 key 进行位元操作,并将结果保存到 destkey 上。
operation 可以是 AND 、 OR 、 NOT 、 XOR 这四种操作中的任意一种