HyperLogLog相关命令
先通过统计网站访问数量得场景来理解基数得概念。例如,在10分钟内,user1点击了3次某网站得页面,user2点击了4次,user3点击了2次,user4点击了5次。虽然油多次点击事件,但是访问者的基数是4,也就是说基数集合里面不包含重复的元素。
通过Redis的HyperLogLog对象能高效地统计基数。在其他统计基数地场景里,元素地数量和内存地消耗量是成正比地,但在redis里每个HyperLogLog对象大概只需要用12KB地内存就能计算 2 64 2^{64} 264个元素地基数。
1、用pfadd添加键值对
通过pfadd命令,能把键值对添加到HyperLogLog对象中,添加后即可进行基数统计。格式如下:
pfadd key element [element ...]
利用HyperLogLog命令可以在一个键上同时添加多个值。
key为Mary的基数值为2
2、用pfcount统计基数值
用pfcount可以查看一个或多个键的基数,格式如下:
pfcount key [key ...]
如果对应的key不存在,则返回0.
3、用pfmerge进行合并操作
通过pfmerge命令,能把多个HyperLogLog合并成一个,格式如下:
pfmerge destkey sourcekey [sourcekey ...]
其中,sourcekey是待合并的对象,可以是一个或多个;destkey是合并后HyperLogLog的键,如果合并前destkey不存在,则会新建一个。
4、统计网站访问总人数
利用HyperLogLog统计访问人数的方法。
在实际项目里,可能访问列表会很长,用HyperLogLog统计的性能比较快,另外还能用较小的存储空间代价来完成通国际访问总人数的工作。