zoukankan      html  css  js  c++  java
  • 【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 上。

    --不要用肉体的勤奋,去掩盖思考的懒惰--
  • 相关阅读:
    splunk linux安装
    [读书笔记]-时间管理-把时间当做朋友
    [读书笔记]-技术学习-Redis
    [读书笔记]-阅读方法-王者速读法
    vuex、localStorage、sessionStorage之间的区别
    vuex的使用
    Vue常用指令总结
    vue-router参数传递
    Vue-router的基本使用
    v-on精炼
  • 原文地址:https://www.cnblogs.com/pingguo-softwaretesting/p/14905963.html
Copyright © 2011-2022 走看看