Hyperloglog
什么是基数?
A{1,3,5,7,8,7}
A{1,3,5,7,8}
基数(不重复的元素的个数) = 5 ,可以接受误差!
Redis Hyperloglog 基数统计的算法!
pfadd key element … 给key中添加元素
pfcount key 计算key中有多少个不重复的元素(基数)
pfmerge destination key1 key2 :将多个key合并到destination(目标)中,如果有重复的只会添加一次重复的数据!
127.0.0.1:6379> PFADD myset a b c d e f g h i j
(integer) 1
127.0.0.1:6379> PFCOUNT myset
(integer) 10
127.0.0.1:6379> PFADD myset2 i j k l m n
(integer) 1
127.0.0.1:6379> PFMERGE myset3 myset myset2
OK
127.0.0.1:6379> PFCOUNT myset3
(integer) 14
Bitmaps
位存储
统计用户信息,活跃,不活跃!登录、未登录!打卡,365打卡!两个状态的都可以使用Bitmaps!
Bitmaps位图,数据结构!都是操作二进制位来进行记录,就只有0和1两个状态!
setbit key offset value :给key添加周一到周日是否打卡!
0代表周一,1代表周二,以此类推,value=1代表打卡,0代表未打卡!
127.0.0.1:6379> setbit sign 0 1
(integer) 0
127.0.0.1:6379> setbit sign 1 0
(integer) 0
127.0.0.1:6379> setbit sign 2 0
(integer) 0
127.0.0.1:6379> setbit sign 3 0
(integer) 0
127.0.0.1:6379> setbit sign 4 0
(integer) 0
127.0.0.1:6379> setbit sign 5 0
(integer) 0
127.0.0.1:6379> setbit sign 6 0
(integer) 0
查看某一个是否打卡!
getbit key value :查看某一天是否打卡,打卡了返回1,没有打卡返回0!
127.0.0.1:6379> getbit sign 1
(integer) 0
127.0.0.1:6379> getbit sign 0
(integer) 1
统计操作,统计打卡的天数!
bitcount key : 统计key中value为1的个数!
127.0.0.1:6379> BITCOUNT sign
(integer) 1