HyperLogLog并不是一种新的数据结构(实际类型为字符串类型),而是一种基数算法,通过HyperLogLog可以利用极小的内存空间完成独立总数的统计,数据集可以是ip、Email、ID等。
Pfadd命令用于向HyperLogLog添加元素,如果成功返回1.
例如:
10.3.34.101:6378> pfadd pfkey3 pfv1 pfv4pfv5 pfv1
(integer) 1
Pfcount命令会计算一个或多个HyperLogLog的独立总数。
例如:
10.3.34.101:6378> pfadd pfkey3 pfv1 pfv4pfv5 pfv1
(integer) 1
10.3.34.101:6378> pfcount pfkey3
(integer) 3
Pfmerge可以求出多个HyperLogLog的并集,并赋给destkey。
例如:
10.3.34.101:6378> pfadd pfkey1 pfv1 pfv2pfv3
(integer) 1
10.3.34.101:6378> pfadd pfkey2 pfv1 pfv4pfv5
10.3.34.101:6378> pfmerge pfm1 pfkey1pfkey2
OK
10.3.34.101:6378> pfcount pfm1
(integer) 5
优点:
HyperLogLog的内存占用非常下,下面是它和集合类型的内存占用量对比,分别在集合set和HyoerLogLog中存储100万数据
缺点:
存在一定的误差率,Redis官方给出的误差率是0.81%
