redis-如何统计海量UV统计
UV统计是很多电商常见的一个需求,与PV不同的是,PV是统计应用的点击量或者浏览量,UV是单个页面单个用户去重之后的访问次数。如果用redis实现该功能,PV完全可以用计数器实现,UV可能大家会想到用redis的set不断去添加,但是如果你的网站并发量非常大,你将维护以后巨大的set。这时候就要介绍一个redis专门用于该类型场景的数据结构HyperLogLog了。
·

redis-如何统计海量UV统计
UV统计
UV统计是很多电商常见的一个需求,与PV不同的是,PV是统计应用的点击量或者浏览量,UV是单个页面单个用户去重之后的访问次数。如果用redis实现该功能,PV完全可以用计数器实现,UV可能大家会想到用redis的set不断去添加,但是如果你的网站并发量非常大,你将维护以后巨大的set。这时候就要介绍一个redis专门用于该类型场景的数据结构HyperLogLog了
一、HyperLogLog基础指令
pfadd
pfcount
127.0.0.1:6379> pfadd uvtest user1
(integer) 1
127.0.0.1:6379> pfadd uvtest user2
(integer) 1
127.0.0.1:6379> pfadd uvtest user3
(integer) 1
127.0.0.1:6379> pfcount uvtest
(integer) 4
二、jedis实现
public class testMain {
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost", 6379);
for (int i = 0; i < 1000000; i++) {
jedis.pfadd("uvtestcount", "user" + i);
}
System.out.println(jedis.pfcount("uvtestcount"));
jedis.close();
}
}

这里发现最后HyperLogLog出来的数据量并不是100W,可以发现HyperLogLog这个数据结构是存在微小差异的。本身UV统计的需求也是统计一个大概的量,不需要非常精确。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)