使用redis统计uv pv

项目中我们通常要评估项目的使用人数,通常用PV(页面访问量) UV(用户访问量)来衡量,下面通过redis来实现该功能

1,统计项目PV
PV每次页面访问都应记录一次,这种情况比较简单,只需要维护一个计数器即可,每次访问调用一次Incr命令自增,下面主要说明统计uv的情况

2,统计项目的uv
uv每个用户一天内多次访问只记录一次,这里面存在一个去重的问题,如果用户量不大,每个用户一个key-value就行,即userid:1,然后统计多少个key即可.但是当用户量很大比如上百万,像腾讯日均uv可以达到上亿,每个用户一个key,对资源占用率太大。
仔细想一下就很容易明白,我们关注的只是用户量的累计值,并不关心是哪些用户,所以userid没必要去记录,但是如果不记录哪些用户登录过了,去重又是个问题,所以需要标记哪些用户已经存储过了。
2.1
采用bitmap结构记录哪些用户登录过了,bitmap其实就还是个字符串,只不过内容为二进制字符串,只有0和1,用户登录也是 ’登录‘ ‘未登录’ 两种状态,可以很好解决这个问题

id为1的用户登录了
id为2的用户登录了
当天总用户量
统计1的个数即uv量

这种方式也有缺点,当记录一个很大id时,即使只有一个他也会开辟i个槽位,i-1个槽位前面全是0
在这里插入图片描述
存储id=100000000 的用户直接占用12M
2.2使用HyperLogLog结构存储(待续)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值