您现在的位置是:网站首页> 编程资料编程资料
Redis特殊数据类型HyperLogLog基数统计算法讲解_Redis_
2023-05-27
536人已围观
简介 Redis特殊数据类型HyperLogLog基数统计算法讲解_Redis_
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特殊数据类型bitmap位图_Redis_
- Redis内存碎片处理实例详解_Redis_
- 浅谈Redis的事件驱动模型_Redis_
- 使用SpringBoot + Redis 实现接口限流的方式_Redis_
- Redis中秒杀场景下超时与超卖问题的解决方案_Redis_
- Redis异常测试盘点分析_Redis_
- Redisson如何解决Redis分布式锁提前释放问题_Redis_
- 基于 Redis 实现接口限流的方式_Redis_
- Redis中ServiceStack.Redis和StackExchange.Redis区别详解_Redis_
- Redis内部数据结构Dict的实现方法_Redis_