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/这是他的主页

img

posted @ 2022-02-25 16:17  Oh,mydream!  阅读(265)  评论(0编辑  收藏  举报