10.Redis 的特殊数据类型之一:Hyperloglog

zhanglei 2022年07月25日 298次浏览

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 或者自己的数据类型就可以 !