HyperLogLog用法

发布时间 2023-08-26 16:13:34作者: 自学Java笔记本

场景引入:

两个概念:

  • UV:全程Unique Visitor,也叫独立访客量,是指通过互联网访问,浏览这个网页的自然人。1天内同一个用户多次访问该网站,只记录一次。
  • PV:全称PageView,也叫页面访问量或点击量,用户每次访问网站的一个页面,记录一次pv,用户多次打开页面,则记录多次pv。往往用来衡量网站的流量

UV统计izai服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。但是如果每个访问的用户都保存到Redis中,数据量会非常恐怖。

HyperLogLog用法

Hyperlogiog HLL是以L0g具法派率具法,用于定大的集合的星数而不需要存储其有值,关法原大家参考: https://juejin.cn/post/6844903785744056333#heading-0
Redis中的HLL是基于stimng结构实现的,单个HL的内存永远小16kb,内存占用的今人发指!作为价,其现量结果是部率性的,有小0.81 %误差,不对于UV统计来说,这完全可以忽路
image

实现UV统计

对于 HyperLogLog来说,天然的支持唯一性的数据,例如添加多个相同的id,那么只会存在一个
image

总结

HyperLogLog的作用:

  • 做海量数据的统计工作

HyperLogLog的优点:

  • 内存占用极低
  • 性能非常好

HyperLogLog的缺点:

  • 有一定的误差