redis--UV

一、基础概念

  1. UV(Unique Visitor)独立访客 一天内同一个用户不管访问多少次页面,只统计 1 次 ,统计的是去重人数。
  2. PV(Page View)页面访问量 用户每打开一次页面就记一次,多次访问会累加,统计总点击次数。

问题:如果用 Set 存用户 id 做 UV 统计,海量用户时内存开销极大。 方案:HyperLogLog,概率型基数统计结构,不存原始数据,只估算数量。

二、HyperLogLog 核心特点

  • 底层基于 Redis String 实现,单个 HLL 最多占用 <16KB 内存,可以统计上亿级别的去重数量。
  • 存在误差:标准误差 0.81%,适合 UV 这类允许少量误差的统计场景。
  • ⚠️ 缺点:不能取出里面存入的原始元素,只能拿到估算总数;如果业务必须拿到所有用户明细,不能用 HLL。

三、三大核心命令

表格

命令 作用
PFADD key element [element...] 往 HLL 中添加元素(用户标识:userId / 设备 id),重复添加无影响
PFCOUNT key [key...] 获取估算的基数(UV 数量);传多个 key 会自动合并后返回总数
PFMERGE destkey sourcekey [sourcekey...] 把多个 HLL 合并成一个 HLL,用于多渠道 UV 汇总

四、业务示例(每日 UV)

复制代码
# 记录今天页面访问的用户
PFADD uv:20260927 user1001 user1002 user1003
# 再访问,重复用户添加不改变基数
PFADD uv:20260927 user1001
# 查询今日UV
PFCOUNT uv:20260927
# 合并两天UV到新key
PFMERGE uv:total uv:20260926 uv:20260927
相关推荐
IT规划师4 小时前
Redis 数据类型全解 - Stream 深度:消费者组、Pending 队列与死信处理(十)
redis·.net
我是大猴子14 小时前
redis
数据库·redis·缓存
码哥字节19 小时前
Redis 分布式锁的 7 个坑:从 setnx 到 Redlock
redis·分布式锁
徐小黑ACG1 天前
Redis-基础
数据库·redis·缓存
鶴哥只手遮天1 天前
《Redis 8.10.3 深度剖析》系列 ·第 10 章 Hash 一:`listpack`、`hashtable` 与 `LISTPACK_EX`
redis·后端·开源
IT规划师1 天前
Redis 数据类型全解 - GEO 地理空间:附近的人、外卖、打车——背后原理与精度陷阱(九)
redis·.net
我不会起名字3222 天前
Redis 从 0 到 1(三十三):机器断电 Redis 起不来——AOF/RDB 损坏的 4 步抢救流程
redis·数据恢复·aof·rdb·排查