根据b站UP主狂神说Redis课程所写的个人学习笔记
视频地址:https://www.bilibili.com/video/BV1S54y1R7SB
基数(不重复的元素)
简介:
redis hyperloglog 基数统计的算法
优点:占用的内存是固定的,2^64 不同的元素的技术,只需要12kb的内存,如果从内存角度比较的话hyperloglog是首选
网页uv(一个人访问多次网站,但只算一个人)
传统方法:set保存用户id,然后就可以统计set中元素数量作为判断标准
这个方式如果保存大量用户id就会比较麻烦,我们的目的是为了计数,不是保存id
错误率在0.81%,可以忽略不计
127.0.0.1:6379> clear
127.0.0.1:6379> pfadd mykey 1 2 3 4 5 6 7 #pfadd添加元素
(integer) 1
127.0.0.1:6379> pfadd mykey2 8 9 0
(integer) 1
127.0.0.1:6379> pfcount mykey #统计数量
(integer) 7
127.0.0.1:6379> pfcount mykey2
(integer) 3
127.0.0.1:6379> pfmerge mykey3 mykey mykey2 #合并mykey和mykey2到mykey3
OK
127.0.0.1:6379> pfcount mykey3 #查看并集的数量
(integer) 10
127.0.0.1:6379> pfadd mykey4 1 2 11
(integer) 1
127.0.0.1:6379> pfmerge mykey5 mykey mykey4
OK
127.0.0.1:6379> pfcount mykey5 #由于mykey里面有mykey4中的1和2,所以长度只有7+1 = 8
(integer) 8
如果允许容错,可以使用hyperloglog
不能容错则使用set或其他数据结构