Redis系列10:HyperLogLog实现海量数据基数统计( 二 )

3.2 PFCOUNT 统计数量Redis Pfcount 命令返回给定 HyperLogLog 的基数的估算值 。语法如下:
redis > PFCOUNT key [key ...]下面估算了访问IP的基数的值,返回 1034546。
redis> PFCOUNT baidu:ip_address(integer) 10345463.3 PFMERGE 合并统计Redis PFMERGE 命令将多个 HyperLogLog 合并为一个 HyperLogLog ,合并后的 HyperLogLog 的基数估算值是对给定 HyperLogLog 进行并集计算得出的 。所以有重复的会被统计成一条数据 。合并得出的 HyperLogLog 会被储存在 destkey 键里面, 如果该键并不存在 , 那么命令在执行之前,会先为该键创建一个空的 HyperLogLog。语法如下:
redis > PFMERGE destkey sourcekey [sourcekey ...]下面演示了合并和统计的过程:
/* 统计百度 baidu:ip_address 访问IP */redis> PFADD baidu:ip_address "192.168.0.1" "192.168.0.2" "192.168.0.3"(integer) 1 /* 统计淘宝 taobao:ip_address 访问IP */redis> PFADD taobao:ip_address "192.168.0.3" "192.168.0.4" "192.168.0.5"(integer) 1/* 合并且去重之后放在 total:ip_address*/redis> PFMERGE total:ip_address baidu:ip_address taobao:ip_addressOK/* 结果为5 */redis> PFCOUNT total:ip_address(integer) 54 总结基数计数是用于统计一个集合中不重复的元素个数,好比平常需求场景有,统计页面的UV或者统计在线的用户数、注册IP数等 。HyperLogLog 主要基于Redis能力下的基数统计 。HyperLogLog的主要使用场景包括:

  • 统计单日一个页面的访问量(PV),单次访问就算一次 。
  • 统计单日一个页面的用户访问量(UV),即按照用户为维度计算 , 单个用户一天内多次访问也只算一次 。
  • 多个key的合并统计,某个门户网站的所有模块的PV聚合统计就是整个网站的总PV 。

推荐阅读