hyperloglog类型详解
hyperloglog类型详解
基数:不重复的元素数量就是基数
Redis Hyperloglog就是使用基数统计的算法!
优点:占用的内存是固定的, 2^64不同元素的技术,只需要占用12k的内存!如果要从内存角度来比较,Hyperlog是首选
缺点:0.81%的错误率。适用于可接受容错的场景
使用场景:
网页的UV(浏览量,一个人访问一个网站多次,但是还是算作一个人)
传统的方法是:使用set保存用户id,然后就可以统计set中的元素数量作为标准判断
这个方式如果保存大量的用户id,就会占用大量的内存!我们的目的是为了计数,二不是保存用户id
# pfadd
# pfcount
# pfmerge
127.0.0.1:6379[3]> pfadd mykey a b c d e f g h i j
(integer) 1
127.0.0.1:6379[3]> pfcount mukey
(integer) 0
127.0.0.1:6379[3]> pfcount mykey
(integer) 10
127.0.0.1:6379[3]> pfadd mykey2 i j z x c v b n m
(integer) 1
127.0.0.1:6379[3]> pfcount mykey2
(integer) 9
127.0.0.1:6379[3]> pfmerge mykey3 mykey mykey2
OK
127.0.0.1:6379[3]> pfcount mykey3
(integer) 15
题外话
hyperloglog,命令里面的缩写是pf
这是为了纪念这个算法的提出者 Philippe Flajolet:http://algo.inria.fr/flajolet/这是他的主页