• 【Redis】特殊数据类型


    HyperLogLog 是用来做基数统计的算法。

    先了解下什么是基数。
    比如数据集{1, 3, 5, 7, 5, 7, 8},那么这个数据集的基数集为{1, 3, 5 ,7, 8},基数(不重复元素)为5。

    如果,现在需要统计一下网页的UV,那么就会涉及到去重了,这种场景就很适合用HyperLogLog。

    这不就是set集合嘛?我用set来得出不重复的元素也可以呀。

    没错,是可以,但是当数据量非常大的时候,你这个set是不是会占用非常大的内存呢?
    如果用HyperLogLog来处理就好了,因为它计算基数所需要的空间是一定的,只要12kb,就可以计算接近 2^64 个不同元素的基数。

    但是注意在这个数量级下,是会存在0.81%的错误率的,所以说具体还得看业务是否可以接受这样的错误率。
    像上面说的统计UV的场景,这点错误率是可以忽略的。

    一、pfadd

    将所有元素参数添加到 HyperLogLog 数据结构中。

    pfadd mypf 1 2 3 a b c 3 4 5 c d a
    

    二、pfcount

    返回给定 HyperLogLog 的基数估算值。

    pfcount mypf
    

    可以看到,返回的是9,也就是不重复的元素数量有9个。

    三、pfmerge

    将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。

    pfmerge mypftotal mypf3 mypf4
    

    mypf3、mypf4合并到mypftotal 上。

    --不要用肉体的勤奋,去掩盖思考的懒惰--
  • 相关阅读:
    [Tkinter 教程12] 布局管理 (Pack Place Grid)
    python 文本全选
    CMD窗口恢复默认设置
    Python基础第一天
    Windows:安装Python2.7、3.6与共存,安装pycharm
    Linux安装
    Python input() 函数
    python的continue和pass的区别
    Python 文件读写操作实例详解
    python tkinter教程-事件绑定
  • 原文地址:https://www.cnblogs.com/pingguo-softwaretesting/p/14905963.html
Copyright © 2020-2023  润新知