Redis特殊数据类型HyperLogLog基数统计算法讲解
Redis HyperLogLog基数统计
HyperLogLog 是用来做基数统计的算法。
先了解下什么是基数。
比如数据集{1, 3, 5, 7, 5, 7, 8},那么这个数据集的基数集为{1, 3, 5 ,7, 8},基数(不重复元素)为5。
如果,现在需要统计一下网页的UV,那么就会涉及到去重了,这种场景就很适合用HyperLogLog。
这不就是set集合嘛?我用set来得出不重复的元素也可以呀。
没错,是可以,但是当数据量非常大的时候,你这个set是不是会占用非常大的内存呢?
如果用HyperLogLog来处理就好了,因为它计算基数所需要的空间是一定的,只要12kb,就可以计算接近 2^64 个不同元素的基数。
但是注意在这个数量级下,是会存在0.81%的错误率的,所以说具体还得看业务是否可以接受这样的错误率。
像上面说的统计UV的场景,这点错误率是可以忽略的。
一、pfadd
将所有元素参数添加到 HyperLogLog 数据结构中。
pfadd mypf 1 2 3 a b c 3 4 5 c d a

二、pfcount
返回给定 HyperLogLog 的基数估算值。
pfcount mypf
可以看到,返回的是9,也就是不重复的元素数量有9个。

三、pfmerge
将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是通过对所有 给定 HyperLogLog 进行并集计算得出的。
pfmerge mypftotal mypf3 mypf4
把mypf3、mypf4合并到mypftotal 上。

以上就是Redis特殊数据类型HyperLogLog基数统计算法讲解的详细内容,更多关于Redis HyperLogLog基数统计的资料请关注脚本之家其它相关文章!
相关文章
Redis高级数据类型Hyperloglog、Bitmap的使用
很多小伙伴在面试中都会被问道 Redis的常用数据结构有哪些?可能很大一部分回答都是 string、hash、list、set、zset,但其实还有Hyperloglog和Bitmap,本文就来介绍一下2021-05-05


最新评论