1 HyperLogLog简介
HyperLogLog实际类型是字符串,通过基数算法利用极小的空间来完成独立总数的统计。这种统计不是100%准确的,官方给出的是0.81%的误差。
2 常用命令
同样以用户登录在某天登录来介绍
2.1 添加
pfadd key element [element ...]
4个用户在2020-09-01这天进行登录,3个用户在2020-09-02号这天登录
127.0.0.1:6379> pfadd user:login:2020-09-01 user1 user2 user3 user4
(integer) 1
127.0.0.1:6379> pfadd user:login:2020-09-02 user3 user4 user5
(integer) 1
2.2 统计
pfcount key [key ...]
计算2020-09-01这天登录的用户数
127.0.0.1:6379> pfcount user:login:2020-09-01
(integer) 4
计算2020-09-01和2020-09-02这两天登录的用户数
127.0.0.1:6379> pfcount user:login:2020-09-01 user:login:2020-09-02
(integer) 5
2.3 合并
pfmerge destkey sourcekey [sourcekey ...]
destkey:合并之后的key
把这两天的用户登录进行合并
127.0.0.1:6379> pfmerge user:login:2020-09-01merge2020-09-02 user:login:2020-09-01 user:login:2020-09-02
OK
127.0.0.1:6379> pfcount user:login:2020-09-01merge2020-09-02
(integer) 5
3 选型标准
只计算独立总数,不需要获取单条数据
可以容忍一定的误差,毕竟hyperloglog在内存占用上还是节省了大量空间的。《Redis开发与运维》中测试100w用户量,集合类型需要占用80M左右的内存,但是hyperloglog只需15K