赞
踩
HyperLogLog提供了3个命令: pfadd、pfcount、pfmerge。
例如08-15的访问用户是u1、u2、u3、u4,08-16的访问用户是u-4、u-5、u-6、u-7
pfadd key element [element …]
pfadd用于向HyperLogLog 添加元素,如果添加成功返回1:
pfadd 08-15:u:id “u1” “u2” “u3” “u4”
pfcount key [key …]
pfcount用于计算一个或多个HyperLogLog的独立总数,例如08-15:u:id的独立总数为4:
pfcount 08-15:u:id
如果此时向插入u1、u2、u3、u90,结果是5:
pfadd 08-15:u:id “u1” “u2” “u3” “u90”
pfcount 08-15:u:id
如果我们继续往里面插入数据,比如插入100万条用户记录。内存增加非常少,但是pfcount 的统计结果会出现误差。
以使用集合类型和 HperLogLog统计百万级用户访问次数的占用空间对比:
数据类型 1天 1个月 1年
集合类型 80M 2.4G 28G
HyperLogLog 15k 450k 5M
可以看到,HyperLogLog内存占用量小得惊人,但是用如此小空间来估算如此巨大的数据,必然不是100%的正确,其中一定存在误差率。前面说过,Redis官方给出的数字是0.81%的失误率。
pfmerge destkey sourcekey [sourcekey … ]
pfmerge可以求出多个HyperLogLog的并集并赋值给destkey,请自行测试。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。