利用redis + HyperLogLog解决统计IP相关问题(也变相解决了大数据量内存占用问题)

一、应用场景:

统计注册 IP 数 / 统计每日访问 IP 数 / 统计页面实时 UV 数 / 统计在线用户数等

注意:它也有局限性,就是只能统计基数数量,而没办法去知道具体的内容是什么。

        它和bitmap相比,属于两种特定统计情况,简单来说,HyperLogLog 去重比 bitmap 方便很多。


1、最典型的是统计访问 IP 数

指令 PFADD key element [element ...] 添加指定元素到 HyperLogLog 中。

        PFCOUNT key [key ...] 返回给定 HyperLogLog 的基数估算值。

        PFMERGE destkey sourcekey [sourcekey ...] 将多个 HyperLogLog 合并为一个 HyperLogLog


直接贴例子:

    用命令PFCOUNT 求得的ip数量,直接去重了,简单直接,非常棒。

redis> PFADD  ip:20160929  "1.1.1.1"  "2.2.2.2"  "3.3.3.3"
(integer) 1
redis> PFCOUNT  ip:20160929
(integer) 3
redis> PFADD  ip:20160928  "1.1.1.1"  "4.4.4.4"  "5.5.5.5"
(integer) 1
redis> PFCOUNT  ip:20160928  ip:20160929
(integer) 5

猜你喜欢

转载自blog.csdn.net/u012888052/article/details/80380422