首页/数据/数据库速查/去重与 UV 统计选型(Set / HyperLogLog)
Redis 命令96 条

去重与 UV 统计选型(Set / HyperLogLog)

Set 精确去重但内存随基数线性增长;HyperLogLog 固定约 12KB、误差 0.81%,适合海量 UV;两者都支持合并。

数据库速查数据更新于 2026-10-12

精确 vs 近似

精确 vs 近似
# 精确:
SADD uv:day:20261012 uid1 uid2 uid3
SCARD uv:day:20261012
# 近似:
PFADD hll:uv:20261012 uid1 uid2 uid3
PFCOUNT hll:uv:20261012              # 3
# 合并多天:
PFMERGE hll:uv:week hll:uv:20261011 hll:uv:20261012
PFCOUNT hll:uv:week

选型

维度SetHyperLogLog
精确性精确约 0.81% 误差
内存O(基数)固定约 12KB
读取可列出成员只能计数
合并SUNIONSTOREPFMERGE
需要「列出是谁」用 Set;只要数字且规模大用 HLL;HLL 不支持删除单个成员是常见认知盲区。

易错点

  • HLL 想删某个用户:不支持,只能整键重算或换结构
  • 小基数也用 HLL:12KB 固定开销对小数据反而更贵

数据来源与参考

  • Redis 官方文档: HyperLogLog
  • Redis 官方文档: SCARD

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌