redis HyperLogLog的使用

2019/09/12 13:39
阅读数 19

一、概念
1、redis在2.8.9版本添加了HyperLogLog结构。
2、redis HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是:在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且使很小的。
3、在redis里面,每个HyperLogLog键只需要花费12kb内存,就可以计算接近2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。
4、但是,因为HyperLogLog只会根据输入元素来计算基数,而不会存储输入元素本身,所以HyperLogLog不能像集合那样,返回输入的各个元素。

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

二、HyperLogLog相关命令

  • 命令名称: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
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部