- Bitmaps 单独提供了一套命令,所以在 Redis 中使用 Bitmaps 和使用字符串的方法不太相同。可以把 Bitmaps 想象成一个以 位 为单位的数组,数组的每个单元只能存储 0 和 1,数组的下标在Bitmaps中叫做偏移量。
基础操作:
setbit key offset value 设置值
getbit key offset 获取值
bitcount [start end ] 获取指定范围内1的个数
bitpos key targetBit [start end ] 计算bitmaps 中第一个值为targetbit偏移量 bitpos key 1 计算key中当前访问网站的最小用户id
bitop op destkey key (op = or,and,not,xor) bitmap 之间的运算
operation
可以是 AND
、 OR
、 NOT
、 XOR
这四种操作中的任意一种:
BITOP AND destkey key [key ...]
,对一个或多个key
求逻辑并,并将结果保存到destkey
。BITOP OR destkey key [key ...]
,对一个或多个key
求逻辑或,并将结果保存到destkey
。BITOP XOR destkey key [key ...]
,对一个或多个key
求逻辑异或,并将结果保存到destkey
。BITOP NOT destkey key
,对给定key
求逻辑非,并将结果保存到destkey
。
结论:bitmaps并不是万精油,假设每天的量很少,比如只有10万(大量的僵尸用户),这时用bitmaps不太合适
HypeLoglog:
并不是新型的数据结构(实际类型是字符串类型),而是一种基数算法
pfadd key elements 添加元素
pfcount key 计算独立用户数
info memery 查看内存
pfmerge destkey sourcekey 合并,并集
结论:内存占用量少,但是存在错误率,量多容许一定的误差率可以选择