HyperLogLog 数据结构 统计数据

UV 不⼀样,它要去重,同⼀个⽤户⼀天之内的多次访问请求只能计数⼀次。这就要求每⼀个⽹⻚请求都需要带上⽤户的 ID,⽆论是登陆⽤户还是未登陆⽤户都需要⼀个唯⼀ ID 来标识。如⼀个爆款⻚⾯⼏千万的UV,你需要⼀个很⼤的 set 集合来统计,这就⾮常浪费空间。如果这样的⻚⾯很多,那所需要的存储空间是惊⼈的

Redis 提供了 HyperLogLog 数据结构就是⽤来解决这种统计问题的。HyperLogLog 提供不精确的去重计数⽅案,虽然不精确但是也不是⾮常不精确,标准误差是0.81%,这样的精确度已经可以满⾜上⾯的 UV 统计需求了。
HyperLogLog 提供了两个指令 pfadd 和 pfcount,根据字⾯意义 很好理解,⼀个是增加计数,⼀个是获取计数。pfadd ⽤法和 set 集合的 sadd 是⼀样的,来⼀个⽤户 ID,就将⽤户 ID 塞进去就是pfcount 和 scard ⽤法是⼀样的,直接获取计数值。
27.0.0.1:6379> pfadd codehole user1
(integer) 1
127.0.0.1:6379> pfcount codehole
(integer) 1
127.0.0.1:6379> pfadd codehole user2
(integer) 1
127.0.0.1:6379> pfcount codehole
(integer) 2
127.0.0.1:6379> 

 

转载于:https://www.cnblogs.com/hanmengya/p/10957783.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值