Redis HyperLogLog
用极小内存做海量去重计数(UV 统计)。
Key PointsHyperLogLog 用 ~12KB 估算上亿元素的去重个数,结果有约 0.81% 误差。
用法
Shell
PFADD uv:2026-05-20 u1 u2 u3 u1 # 加入,u1 重复自动去重
PFCOUNT uv:2026-05-20 # 估算去重数 -> 3
PFADD uv:2026-05-20 u4
PFCOUNT uv:2026-05-20 # -> 4
PFMERGE uv:total uv:2026-05-20 uv:2026-05-21 # 合并多天Output
(integer) 3
(integer) 4
(integer) 1Use Set for exact dedupe, but a Set of 100M UVs blows memory. HyperLogLog trades accuracy for tiny space, perfect for 'about how many unique visitors'. It cannot list members — only counts.
用法
Shell
PFADD uv:2026-05-20 u1 u2 u3 u1 # 加入,u1 重复自动去重
PFCOUNT uv:2026-05-20 # 估算去重数 -> 3
PFADD uv:2026-05-20 u4
PFCOUNT uv:2026-05-20 # -> 4
PFMERGE uv:total uv:2026-05-20 uv:2026-05-21 # 合并多天Output
(integer) 3
(integer) 4
(integer) 1精确去重用 Set(
SCARD),但上亿 UV 的 Set 会爆内存。HyperLogLog 牺牲精度换空间,适合「大概多少独立访客」这类允许误差的指标。不能取回具体成员——它只回答「有多少」。