- 2
- 0
- 约1.49万字
- 约 13页
- 2026-10-20 发布于北京
- 举报
Redis高级数据结构HyperLogLog
HyperLogLog(Hyper[ˈhaɪpə(r)])并不是一种新的数据结构(实际类型为字符串类型),而是一种基数算法,
通过HyperLogLog可以利用极小的内存空间完成独立总数的统计,数据集可以是IP、Email、ID等。
如果你负责开发一个大型的,有一天产品经理要每个网页每天的UV数据,然后让你来开发
这个统计模块,你会如何实现?
如果统计PV那非常好办,给每个网页一个独立的Redis计数器就可以了,这个计数器的key后缀加上
当天的日期。这样来一个请求,incrby一次,最终就可以统计出所有的PV数据。
但是UV不一样,它要去重,同一个用户一天之内的多次请求只能计数一次。这就要求每一个网页请
求都需要带上用户的ID,无论是登陆用户还是未登陆用户都需要一个唯一ID来标识。
一个简单的方案,那就是为每一个页面一个独立的set集合来所有当天过此页面的用户ID。当
一个请求过来时,我们使用sadd将用户ID塞进去就可以了。通过scard可以取出这个集合的大小,这个
数字就是这个页面的UV数据。
原创力文档

文档评论(0)