zoukankan      html  css  js  c++  java
  • redis中hyperloglog基数统计

    redis中hyperloglog基数统计

    1、简介

    Redis 在 2.8.9 版本添加了 HyperLogLog 结构。

    Redis HyperLogLog 是用来做基数统计的算法,HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

    在 Redis 里面,每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近 2^64 个不同元素的基 数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。

    但是,因为 HyperLogLog 只会根据输入元素来计算基数,而不会储存输入元素本身,所以 HyperLogLog 不能像集合那样,返回输入的各个元素。

    2、应用场景

    说明:

    • 基数不大,数据量不大就用不上,会有点大材小用浪费空间
    • 有局限性,就是只能统计基数数量,而没办法去知道具体的内容是什么
    • 0.81%错误率,会有误差

    一般使用:

    • 统计注册 IP 数
    • 统计每日访问 IP 数
    • 统计页面实时 UV 数
    • 统计在线用户数
    • 统计用户每天搜索不同词条的个数

    参考资料:https://blog.csdn.net/maoyuanming0806/article/details/81814610

    传统的方式:

    set保存用户的id,然后就可以统计set中的元素数量作为判断的标准

    这个方式如果保存大量的用户id,就会比较麻烦,而且浪费内存!我们的目的是为了计数,而不是保存用户id

    3、测试使用

    127.0.0.1:6379> PFADD mykey a b c d e f g h i j # 创建第一组元素mykey
    (integer) 1
    127.0.0.1:6379> PFCOUNT mykey # 统计mykey元素数量
    (integer) 10
    127.0.0.1:6379> PFADD mykey2 i j z x y w n m l # 创建第二组元素mykey2
    (integer) 1
    127.0.0.1:6379> PFCOUNT mykey2 # 统计第二组元素数量
    (integer) 9
    127.0.0.1:6379> PFMERGE mykey3 mykey mykey2 # 将第一组元素mykey和第二组元素mykey2合并成第三组元素mykey3(去重)
    OK
    127.0.0.1:6379> PFCOUNT mykey3 # 统计第三组元素的数量
    (integer) 17
    
    记得快乐
  • 相关阅读:
    清北学堂总结(未完待续。。。。。。。)
    洛谷p3372 线段树模版
    SPFA模版
    线段树 洛谷 p1531 I hate it(I hate it too)
    01 背包找装满方案数 洛谷 p1164 小a点菜
    01 找最大剩余体积 洛谷1049 装箱问题
    洛谷 p1880 石子合并 区间dp
    石子合并 最大值
    清北学堂入学测试d
    HTML 标记 3 —— 框架
  • 原文地址:https://www.cnblogs.com/Y-wee/p/14560742.html
Copyright © 2011-2022 走看看