什么是基数
A{1,3,5,7,8,7}
B{1,3,5,7,8}
基数(不重复的元素的数量 )
= 5 ,可以接受误差
简介
Redis2.8.9版本更新了Hyperloglog数据结构
Hyperloglog 基数统计的算法
:
优点:占用内存是固定的,2的64次方不同的元素的数据,只需要费12kb内存
如果从内存角度,推荐使用Hyperloglog
网页的UV(一个人访问一个网站多次,但是还是算作一个人)
传统的方式 , set 保存用户的id,然后就可以统计set中的元素数量作为标准判断
这个方式如果保存大量的用户id,就会比较麻烦,我们的目的为了计数,而不是保存用户id
测试使用
127.0.0.1:6379> pfadd mykey a b c d e f g h i j # 创建第一组元素 mykey
(integer) 1
127.0.0.1:6379> PFCOUNT mykey # 统计mykey元素基数的数量
(integer) 10
127.0.0.1:6379> pfadd mykey2 i j z x c v b n m # 创建第一组元素 mykey2
(integer) 1
127.0.0.1:6379> PFCOUNT mykey2
(integer) 9
127.0.0.1:6379> PFMERGE mykey3 mykey mykey2 # 合并两组 mykey mykey2 => mykey3 并集
OK
127.0.0.1:6379> PFCOUNT mykey3 # 查看并集的数量
(integer) 15