欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

redis中的Hyperloglog 基数统计

程序员文章站 2022-07-10 20:30:11
...

Hyperloglog 基数统计

什么是基数

A {1,3,5,8,7,7}

B {1,3,5,7,8}

查找不重复的数的个数 都是5

Redis 2.8.9更新了Hyperloglog 数据结构

Redis Hyperloglog 基数统计的算法

优点:占用的内存量是固定的,2^64不同的元素的基数,只需要12KB内存!如果要从内存角度来比较的话,Hyperloglog首选!

网页的UV(一个人点击多次也算是一个人!),可理解为访问的人数

传统方式,set保存用户的id,然后可以统计set中的元素数量作为标准判断!

这个方式如果保存大量的用户id时,就会比较麻烦!

我们的目的是为了计数,而不是保存用户id

0.81%错误率!统计UV任务,可以忽略不计!

127.0.0.1:6379[1]> PFADD num a b c d e f g h i j  # 创建第一组元素  num
(integer) 1
127.0.0.1:6379[1]> PFADD num1 i j m n v c x z # 创建第二组元素  num1
(integer) 1
127.0.0.1:6379[1]> PFCOUNT num  # 查看第一组元素的个数
(integer) 10
127.0.0.1:6379[1]> PFCOUNT num1 # 查看第二组元素的个数
(integer) 8
127.0.0.1:6379[1]> PFMERGE num_ter num num1 # 合并num和num1并生成num_ter
OK
127.0.0.1:6379[1]> PFCOUNT num_ter # 查看num_ter的个数
(integer) 15