Redis之HyperLogLog算法原理

引入

针对问题

  • 针对用户访问量或活跃量进行统计,由于可能数量级较大,所以直接采用HashMap的方式会占用大量内存,不可取。并且,也因为数量级较大,所以最终的统计结果存在较小的偏差时可接受的
  • 因此,Redis基于此,引入了HyperLogLog结构来处理大数量级的统计问题

发展

伯努利试验

  • 为什么HyperLogLog可以通过较少的内存(官方解释可以通过12K内存就能统计2^64个数据),主要依靠概率论中的伯努利试验
  • 实验的典故源于抛硬币,每次抛出硬币最终出现正方面的概率为50%。假设一直抛硬币,直到出现正面为止,记录为一次完整的试验
  • 对于n次伯努利试验,意味着出现了n次正面,假设每次需要的次数为k_n,则必然会有一个kn的最大值记为k_max,基于极大似然估算的方法,发现存在估算关联n = 2 ^ k_max

优化

  • 做n次伯努利试验进行一次估算,可以称为一轮,仅作一轮估算时误差率会较大,因此我们
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值