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 KB360 KB4.32 MB5.4 GB
一千万12 KB360 KB4.32 MB54 GB
一亿12 KB360 KB4.32 MB540 GB

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值