redis HyperLogLog :
reids在2.8.9版本添加了hyperloglog结构。它是用来做基数统计的算法,优点是,在输入元素的数量或者体积非常大时,计算技术所需要的空间总是固定的、并且是很小的。
在redis里面,每个hyperloglog键只需要花费12KB内存,就可以计算接近2的64次方个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
但是,因为HyperLogLog只会根据输入元素来计算基数,而不会存储元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素。
基数的定义:
比如数据集{1,3,5,7,5,7,8},这个数据集的基数集为{1,3,5,7,8},基数(不重复元素)为5。基数估计就是在误差可接受的范围内,快速计算基数。
实例:HyperLogLog的工作过程:
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
redis hyperloglog命令: