Redis

关注公众号 jb51net

关闭
首页 > 数据库 > Redis > Redis HyperLogLog使用

Redis中HyperLogLog的使用小结

作者:BirdMan98

Redis 的 HyperLogLog 是一种概率性数据结构,用于统计唯一元素的数量(基数),本文主要介绍了Redis中HyperLogLog的使用小结,感兴趣的可以了解一下

Redis 的 HyperLogLog 是一种概率性数据结构,用于统计唯一元素的数量(基数),比如你想知道一个网站有多少独立访问用户(UV)。它的主要优点是:内存占用极小,无论你添加多少数据,它通常只占用 12KB 的内存。

下面是 HyperLogLog 的详细讲解:

🧠 一、HyperLogLog 是什么?

HyperLogLog 是一种基数估计算法,它可以用来估算一个集合中不同元素的数量(Cardinality)。和 Set 不同,Set 会存储所有元素,而 HyperLogLog 并不会保存具体的数据,只保存一种统计状态。

✅ 优点:可以统计大规模唯一元素数量,内存使用极低
❌ 缺点:不是精确统计,有误差范围 ±0.81%

🛠️ 二、使用方法

1. 添加数据

PFADD key element [element ...]
PFADD myloglog user1 user2 user3

2. 查询基数

PFCOUNT key [key ...]
PFCOUNT myloglog

3. 合并多个 HyperLogLog

PFMERGE destkey sourcekey1 [sourcekey2 ...]
PFMERGE totalLog userLog1 userLog2

📊 三、实际示例

# 添加一些用户ID
PFADD uv:20250414 user1 user2 user3 user4 user5

# 查询今天的 UV
PFCOUNT uv:20250414
# 返回 5

# 添加重复的用户 ID(不会重复计数)
PFADD uv:20250414 user1 user2

# 再查一次
PFCOUNT uv:20250414
# 仍然是 5

🧮 四、原理简要(非必须了解)

HyperLogLog 基于概率算法,核心思想是:
哈希每个元素,观察哈希值的前缀中连续0的最大长度,利用这个统计信息估算基数。

💡 五、适用场景

⚠️ 六、注意事项

🧪 七、与 Set 对比

项目SetHyperLogLog
精度精确估算(±0.81%)
内存随数据增大恒定约 12KB
支持去重计数✅(基于概率)
支持元素查看❌(不存数据)
使用场景数据可控小集合超大规模数据统计

如果你有具体的使用场景或代码需求,也可以告诉我,我可以帮你写具体的 Redis 命令或 Python/Lua 示例。需要吗?

到此这篇关于Redis中HyperLogLog的使用小结的文章就介绍到这了,更多相关Redis HyperLogLog使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文