zoukankan      html  css  js  c++  java
  • redis HyperLogLog的使用

    一、概念
    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
  • 相关阅读:
    redis client 2.0.0 pipeline 的list的rpop bug
    Python解释器镜像源修改
    全连接层
    测试(张量)- 实战
    数据加载
    Python之微信-微信好友头像合成
    高阶操作
    MYSQL 查询缓存
    SQL Server 查看指定表上的索引
    MYSQL 查看表上索引的 1 方法
  • 原文地址:https://www.cnblogs.com/cangqinglang/p/15407277.html
Copyright © 2011-2022 走看看