Redis 学习笔记(十一)基数统计(HyperLogLog)
来源:互联网 发布:淘宝电视机价格 编辑:程序博客网 时间:2024/06/06 04:03
Redis 学习笔记(十一)基数统计(HyperLogLog)
1. 介绍
HyperLogLog命令是redis在2.8版本中加入的,Redis中HyperLogLog是用来做基数统计的。
HyperLogLog 的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且是很小的,因此每个 HyperLogLog 键只需要花费 12 KB 内存,就可以计算接近
2.HyperLogLog命令
- PFADD
- 将指定的元素添加到指定的HyperLogLog 结构中。
- 如果一个HyperLogLog的估计的近似基数在执行命令过程中发了变化, PFADD 返回1,否则返回0。
PFADD key element [element ...]
127.0.0.1:6379> PFADD count user1 user2 user3 //往count中添加三个元素(integer) 1 //添加成功127.0.0.1:6379> PFCOUNT count //返回count这个键的估计值(integer) 3 127.0.0.1:6379> PFADD count user1 user2 user3(integer) 0 //添加失败,因为所有元素都已存在127.0.0.1:6379> PFCOUNT count (integer) 3 //还是3个127.0.0.1:6379> PFADD count user3 user4 //添加成功,但是只添加不存在的user4元素(integer) 1 127.0.0.1:6379> PFCOUNT count //估计值变成4个(integer) 4
- PFCOUNT
- 参数为一个key时,返回存储在HyperLogLog结构体的该变量的近似基数,如果该变量不存在,则返回0。
- 当参数为多个key时,返回这些HyperLogLog**并集**的近似基数,这个值是将所有给定key的HyperLoglog结构合并到一个临时的HyperLogLog结构中计算而得到的。
- 返回的可见集合基数并不是精确值, 而是一个带有 0.81% 标准错误(standard error)的近似值。
PFCOUNT key [key ...]
127.0.0.1:6379> PFADD count1 a b c d //往count1添加4个元素(integer) 1 127.0.0.1:6379> PFCOUNT count1 //返回估计值为4(integer) 4127.0.0.1:6379> PFADD count2 a c e f //往count2添加4个元素(integer) 1127.0.0.1:6379> PFCOUNT count2 //返回估计值为4(integer) 4127.0.0.1:6379> PFCOUNT count1 count2 //返回count1和count2并集的估计值6(integer) 6
- PFMERGE
- 将多个 HyperLogLog 合并(merge)为一个 HyperLogLog , 合并后的 HyperLogLog 的基数接近于所有输入 HyperLogLog 的可见集合(observed set)的并集。
- 合并得出的 HyperLogLog 会被储存在目标变量(第一个参数)里面, 如果该键并不存在, 那么命令在执行之前, 会先为该键创建一个空的。
PFMERGE destkey sourcekey [sourcekey ...]
127.0.0.1:6379> PFMERGE count3 count1 count2 //将count1和count2合并到count3中OK127.0.0.1:6379> PFCOUNT count3 //返回count3的估计值6(integer) 6
3.基数统计的比较
有序集合、集合、HyperLogLog和位图(bitmap)四种统计元素基数的比较:
redis统计基数四种办法的比较
0 0
- Redis 学习笔记(十一)基数统计(HyperLogLog)
- Redis 学习笔记(十一)基数统计(HyperLogLog)
- 结合redis设计与实现的redis源码学习-10-hyperloglog(基数统计)
- Redis源码剖析--基数统计hyperloglog
- HyperLogLog-Redis中的基数统计算法
- Redis 基数统计:HyperLogLog 小内存大用处
- Redis系列学习笔记7 HyperLogLog
- Redis学习7--HyperLogLog
- 布隆过滤器和Hyperloglog基数统计的介绍
- 《统计学习方法》学习笔记十一
- Redis HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis-HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- Redis HyperLogLog
- 在Hibernate Validator 4.1+中,@NotNull, @NotEmpty和@NotBlank之间的区别
- 移动端
- 视频电商网站
- 水仙花树;
- 前端-CSS基础知识(二)
- Redis 学习笔记(十一)基数统计(HyperLogLog)
- Linux基础备忘_08: LTP(Linux test project)
- DirectX 配置 vs2013 Win10 64bit
- api 公钥私钥的一点看法
- ViewPager的PagerAdapter的封装
- 现代企业该清楚的商业智能分析解决方案
- 指针和数组名及字符串的区别
- 面试机试之奖励问题
- kali渗透metasploitable靶机