Redis HyperLogLog 《Redis开发与运维读书笔记》

《Redis开发与运维读书笔记》

数据结构模型

HyperLogLog本身不是新的一种数据结构,实际类型为字符串。而是一种 基数算法
通过HyperLogLog可以用极小的内存空间完成独立总数的计算,数据集可以是IP、Email、ID等。

常用命令:

  • 添加
    pfadd key element [element...] 如果添加成功返回 1

  • 计算独立数
    pfcount key [key...]

  • 合并数
    pfmerge destkey sourcekey [sourcekey...]

HyperLogLog分析

HyperLogLog内存占用量非常小,但存在错误率。开发者在进行数据结构选型时只需要确认如下亮点即可:

  • 只为了独立基数,不需要获取单条数据
  • 可以容忍一定的错误率。Redis官方未出的失误率是0.81%

应用场景

每个独立用户对网站的访问记录

  • 将用户访问过网站的用户ID添加到HyperLogLog中
    pfadd unique:users:2018-09-19 ${userId} 其中${userId}为用户ID
  • 获取 2018-09-19 这一天独立访问的用户数
    pfcount unique:users:2018-09-19
  • 获取 2018-09-192018-09-20 这两天都访问过网站的用户
    pfmerge unique:users:2018-09-19-20 unique:users:2018-09-19 unique:users:2018-09-20

与Set内存使用比较

HyperLogLog 实现独立 IP 计算功能

独立 IP 数量 一天 一个月 一年 一年(使用集合)
一百万 12 KB 360 KB 4.32 MB 5.4 GB
一千万 12 KB 360 KB 4.32 MB 54 GB
一亿 12 KB 360 KB 4.32 MB 540 GB

数据来源:https://www.cnblogs.com/ysuzhaixuefei/p/4052110.html

你可能感兴趣的:(redis)