HyperLogLog命令

简介:
HyperLogLog是redis在2.8.9版本添加的一种新的结构。
Redis-HyperLogLog是用来做基数统计的算法,其最大的优点就是:在输入元素的数量或者体积非常非常大的时候,计算基数需要的空间总是固定的,并且很小。在redis中,每一个HyperLogLog只需要12KB内存,就可以计算接近2^64个不同元素的基数,这与元素越多耗费内存越大的集合形成了一个鲜明的对比。但是HyperLogLog只会根据输入元素来计算基数,不会存储输入元素本身,所以HyperLogLog不能和集合一样,返回输入的各个元素。
什么是基数?基数就是一个数据集中元素个数(重复元素只算一个)。
 
命令介绍:
1)pfadd
可用版本: >=2.8.9
时间复杂度: 每添加一个元素复杂度为O(1)
命令格式: pfadd key element [element ...]
作用:
将任意数量的元素添加到指定的HyperLogLog中。(HyperLogLog内部可能会被更新,以便反映一个不同唯一元素估计数量,即集合基数)
返回值:
如果HyperLogLog估计的近似基数在命令执行之后出现了变化,返回1,不然返回0。
注意:
如果指定HyperLogLog不存在的话,默认原始值为一个空HyperLogLog结构。
可以没有element参数,表示只是创建一个空的HyperLogLog结构。创建成功返回1。
 
2)pfcount
可用版本: >=2.8.9
时间复杂度: O(N),N为指定HyperLogLog的个数
命令格式: pfcount key [key ...]
作用:
获取所有给定HyperLogLog的并集的近似基数,这个近似基数带有0.81%标准错误的近似值。
返回值:
返回所有给定HyperLogLog的并集的近似基数,只有一个key的话,就是这个key的近似基数,如果这一个key也不存在的话,返回0。
 
3)pfmerge
可用版本: >=2.8.9
时间复杂度: O(N),N为被合并的HyperLogLog数量
命令格式: pfmerge destkey sourcekey [sourcekey ...]
作用:
将多个HyperLogLog合并成一个,合并之后得到的HyperLogLog保存在destkey中,如果不存在的话,就会创建它。
返回值:
返回OK
posted @ 2021-01-26 17:51  红雨520  阅读(704)  评论(0编辑  收藏  举报