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