《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-19 和 2018-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 |
本文介绍了 Redis 中 HyperLogLog 数据结构的应用,包括如何利用它计算独立用户访问量,并对比了其与 Set 结构在内存使用上的优势。

被折叠的 条评论
为什么被折叠?



