Redis数据结构之HyperLogLog
本文最后更新于 2025年5月25日
1.概述
基数统计是一种去重复统计功能的基数估计算法,HyperLogLog是用来做基数统计的数据结构,HyperLogLog的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定且是很小的。
在Redis里面,每个HyperLogLog键只需要花费12KB内存,就可以计算接近2⁶⁴个不同元素的基数,这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为HyperLogLog只会根据输入元素来计算基数,而不会储存输入元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素。
去重类似Java的HashSet,只是不能存储数据
2.常用命令
2.1 添加元素
PFADD key element [element ..]
例
127.0.0.1:6379> pfadd pf1 1 2 3 4 5 6 5 4 5 6 7 34 2 5 6 4
(integer) 1
127.0.0.1:6379> pfadd pf2 1 2 3 4 5 6 5 4 43 4 21 65 32 54
(integer) 1
hyperloglog本质上是string
127.0.0.1:6379> type pf1
string
2.2 返回基数估算值
PFCOUNT key [key....]
例:去重后只有8个元素
127.0.0.1:6379> PFCOUNT pf1
(integer) 8
2.3 合并hyperloglog
合并到新的destkey中
PFMERGE destkey sourcekey [sourcekey...]
例:合并pf1和pf2为pfm
127.0.0.1:6379> PFMERGE pfm pf1 pf2
OK
127.0.0.1:6379> pfcount pfm
(integer) 13
3.总结
使用场景:
1.网站UV统计,文章阅读数UV统计
"如果文章对您有帮助,可以请作者喝杯咖啡吗?"

微信支付

支付宝
Redis数据结构之HyperLogLog
https://blog.liuzijian.com/post/redis-data-structure-hyperloglog.html