前言
Redis 提供的 HyperLogLog 数据结构常用来解决统计问题。HyperLogLog 提供不精确的去重计数方案,标准误差是0.81%。
应用场景
统计大型网站每天的 UV。来一个用户 ID,就用 pfadd 命令将用户 ID 塞进去。最后用 pfcount 直接获取计数值。
常见命令
- pfadd
- pfcount
redis 127.0.0.1:6379> PFADD runoobkey "redis"
1) (integer) 1
redis 127.0.0.1:6379> PFADD runoobkey "mongodb"
1) (integer) 1
redis 127.0.0.1:6379> PFADD runoobkey "mysql"
1) (integer) 1
redis 127.0.0.1:6379> PFCOUNT runoobkey
(integer) 3
- pfmerge
将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。redis> PFADD hll1 foo bar zap a
(integer) 1
redis> PFADD hll2 a b c foo
(integer) 1
redis> PFMERGE hll3 hll1 hll2
"OK"
redis> PFCOUNT hll3
(integer) 6
redis>
|