Hyperloglog 基数统计
什么是基数?
A{1,3,5,7,8,7}
B{1,3,5,7,8}
基数(一个集合中不重复的元素)= 5
Redis Hyperloglog 基数统计的算法
网页的UV(一个人访问一个网站多次,但是还算一个人)
这个方式如果保存大量的用户id,就会比较麻烦,我们的目的就是为了计数。
优点
占用的内存是固定的,2^64不同的元素的技术,只需要废12KB内存!如果内存角度Hyperloglog 为首选。
1.Pfadd 添加指定元素到 HyperLogLog 中。
添加指定元素到 HyperLogLog 中。返回值整型,如果至少有个元素被添加返回 1, 否则返回 0。
PFADD key element1 element2......
2.Pfcount 返回给定 HyperLogLog 的基数估算值。
返回给定 HyperLogLog 的基数估算值。
PFCOUNT key [key ...].
3.Pfcount 将多个 HyperLogLog 合并为一个 HyperLogLog
将多个 HyperLogLog 合并为一个 HyperLogLog
PFMERGE 新生成的 原数据key1 原数据key2....
总结
如果允许容错,那么一定可以使用HyperLogLog
如果不允许容错就使用set 和 自定义类型。