redis HyperLogLog的使用

1、概念
一、redis在2.8.9版本添加了HyperLogLog结构。
二、redis HyperLogLog是用来作基数统计的算法,HyperLogLog的优势是:在输入元素的数量或者体积很是很是大时,计算基数所需的空间老是固定的、而且使很小的。
三、在redis里面,每一个HyperLogLog键只须要花费12kb内存,就能够计算接近2^64个不一样元素的基数。这和计算基数时,元素越多耗费内存就越多的集合造成鲜明对比。
四、可是,由于HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素自己,因此HyperLogLog不能像集合那样,返回输入的各个元素。redis

什么是基数
好比数据集{1,3,5,7,5,7,8},那么这个数据集的基数集为{1,3,5,7,8},基数(不重复元素)为5.基数估计就是在偏差可接受的范围内,快速计算基数。算法

2、HyperLogLog相关命令spa

  • 命令名称:pfadd
  • 语法:pfadd key element [element……]
  • 功能:
    • 将任意数量的元素添加到指定的HyperLogLog里面。
    • 做为这个命令的反作用,HyperLogLog内部可能会被更新,以便反映一个不一样的惟一元素估计数量(也便是集合的基数)。
  • 返回值:
    • 整数回复:若是HyperLogLog的内部储存被修改了,那么返回1,不然返回0.

 

  • 命令名称:pfcount
  • 语法:pfcount key [key……]
  • 功能:
    • 当pfcount命令做用于当个键时,返回储存在给定键的HyperLogLog的近似基数,若是键不存在,那么返回0。
    • 当pfcount命令做用于多个键时,返回全部给定HyperLogLog的并集的近似基数,这个近似基数是经过将全部给定HyperLogLog合并至一个临时HyperLogLog来计算得出的。
  • 返回值:
    • 整数回复:给定HyperLogLog包含的惟一元素的近似数量。

 

  • 命令名称:pfmerge
  • 语法:pfmerge destkey sourcekey [sourcekey……]
  • 功能:
    • 将多个HyperLogLog合并(merge)为一个HyperLogLog,合并后的HyperLogLog的基数接近于全部输入HyperLogLog的可见集合(observed set)的并集。
  • 返回值:
    • 返回OK
相关文章
相关标签/搜索