HyperLogLog结构
1.定义
- Redis在HyperLogLog是用来做基数统计的算法,HyperLogLog在输入元素的数量或者体积非常大的时候,计算基数所需的空间总是固定的,并且很小的。
- 在Redis里面,每个HyperLogLog键只需要花费12KB内存,就可以计算解禁2^64个不同元素的基数,这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
- 但是,因为HyperLogLog只会根据输入的元素来计算基数,而不会储存输入元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素
2.基数是什么
比如存在一个数据集{1,3,5,7,7,9,9} ,那么这个数据集的基数集为{1,3,5,7,9},基数(不重复元素)为5,基数估计就是在误差可接受的范围内,快速计算基数。
3.示例:
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