基本介绍
HyperLogLog 族命令基于概率算法实现超大数据集的基数估计(不重复元素计数),每个 HyperLogLog 键仅占用固定约12KB内存,标准误差约0.81%。该族命令适用于 UV(独立访客)统计、搜索关键词去重计数、大规模去重检测等无需精确值的场景,以极低内存代价替代 Set 存储实现亿级基数估算。其核心命令按功能可分为以下三类:
元素添加
PFADD:向 HyperLogLog 结构中添加一个或多个元素,内部通过哈希桶与概率算法记录元素特征。
基数估计
PFCOUNT:返回一个或多个 HyperLogLog 键的基数估计值,支持直接统计多个键的并集基数。
合并操作
PFMERGE:将多个 HyperLogLog 键合并为一个,取并集后存入目标键,适用于多日 UV 累计、多来源去重等跨时间/跨维度的基数聚合场景。
命令支持概览
基础命令:
pfadd、pfcount、pfmerge 在 Redis 2.8 标准架构及4.0、5.0、6.2、7.0版本、Valkey 8.0、9.0的标准架构与集群架构中均完全支持。跨 Slot 限制:集群架构下,
pfcount、pfmerge 不支持跨 Slot 操作;pfadd 不存在跨 Slot 访问场景。命令兼容性矩阵
HyperLogLog 族命令在各版本与架构下的支持情况如下表所示(✓ 表示支持,✗ 表示不支持,— 表示该命令不存在跨 Slot 访问场景)。
命令 | Valkey 9.0标准架构 | Valkey 9.0集群架构 | Redis 7.0/Valkey 8.0标准架构 | Redis 7.0/Valkey 8.0集群架构 | Redis 6.2标准架构 | Redis 6.2集群架构 | Redis 5.0标准架构 | Redis 5.0集群架构 | Redis 4.0标准架构 | Redis 4.0集群架构 | Redis 2.8标准架构 | 集群架构跨 Slot 支持 |
pfadd | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | — |
pfcount | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
pfmerge | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |