跳至主要內容

2.11 Redis数据类型_Hyperloglog 🎉

刘春龙...大约 2 分钟数据库redis

2.11 Redis数据类型_Hyperloglog 🎉

在我们做站点流量统计的时候一般会统计页面UV(独立访客:unique visitor)和PV(即页面浏览量:page view)。redis HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是:在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且使很小的。

什么是基数

比如数据集{1,3,5,7,5,7,8},那么这个数据集的基数集为{1,3,5,7,8},基数(不重复元素)为5.基数估计就是在误差可接受的范围内,快速计算基数。

  • pfadd

将所有元素参数添加到 Hyperloglog 数据结构中。如果至少有个元素被添加返回 1, 否则返回 0。

pfadd book1 uid1 uid2 uid3
  • pfcount

计算Hyperloglog 近似基数,可以计算多个Hyperloglog ,统计基数总数。

pfcount book1       #计算book1的基数,结果为3
pfadd book2 uid3 uid4   #添加两个元素到book2中
pfcount book1 book2    #统计两个key的基数总数,结果为5
  • pfmerge

将一个或多个Hyperloglog(sourcekey1) 合并成一个Hyperloglog (destkey )。比如每月活跃用户可用每天活跃用户合并后计算。

#将book1和book2合并成book,结果为5
pfmerge book book1 book2 

使用场景

基数不大,数据量不大就用不上,会有点大材小用浪费空间,有局限性,就是只能统计基数数量,而没办法去知道具体的内容是什么,和bitmap相比,属于两种特定统计情况,简单来说,HyperLogLog 去重比 bitmaps 方便很多,一般可以bitmap和hyperloglog配合使用,bitmap标识哪些用户活跃。


  • 网站PV统计
  • 网站UV统计
  • 统计访问量(IP数)
  • 统计在线用户数
  • 统计每天搜索不同词条的个数
  • 统计文章真实阅读数
上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7