10.Redis 的特殊数据类型之一:Hyperloglog
什么是基数?
A集合: {1,1,2,2,3,4,5}
A集合的基数为:1,2,3,4,5,即不重复的所有元素 (可以接受误差)
Hyperloglog
Redis 2.8.9版本就更新了 Hyperloglog 数据结构!
用途
Redis Hyperloglog 用作基数数量的统计
优点
占用的内存是固定的,2^64不同元素的基数,只需要用 12KB 的内存!如果要从内存角度的话,Hyperloglog 是首选!
命令
# pfadd key members
# pfcount key
127.0.0.1:6379> pfadd set1 a a b b c # 创建第一组元素
(integer) 1
127.0.0.1:6379> pfcount set1 # 统计第一组元素的基数数量
(integer) 3
127.0.0.1:6379> pfadd set2 c d d e # 创建第二组元素
(integer) 1
127.0.0.1:6379> pfcount set2
(integer) 3
127.0.0.1:6379> pfmerge set3 set1 set2 # 合并第一和第二组元素
OK
127.0.0.1:6379> pfcount set3 # 统计合并后的元素的基数数量
(integer) 5
127.0.0.1:6379>
如果允许容错,那么一定可以使用 Hyperloglog !
如果不允许容错,就使用 set 或者自己的数据类型就可以 !