Redis 在 2.8.9 版本添加了 HyperLogLog 結構。
Redis HyperLogLog 是用來做基數統計的算法
HyperLogLog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定 的、並且是很小的
HyperLogLog 只會根據輸入元素來計算基數,而不會儲存輸入元素本身
基本命令
1. Pfadd
將所有元素參數添加到 HyperLogLog 數據結構中
PFADD key-name element [element ...]
如果至少有個元素被添加返回 1, 否則返回 0
2.Pfcount
PFCOUNT key [key ...]
返回給定 HyperLogLog 的基數估算值
返回給定 HyperLogLog 的基數值,如果多個 HyperLogLog 則返回基數估值之和
3.Pgmerge
將多個 HyperLogLog 合並為一個 HyperLogLog ,合並后的 HyperLogLog 的基數估算值是通過對所有 給定 HyperLogLog 進行並集計算得出的
PFMERGE dest-key key [key ...]
返回 OK
數據集 {a,b,c,d,e,f,a}, 那么這個數據集的基數集為 {a,b,c,d,e,f}, 基數(不重復元素)為6
算法給出的基數並不是精確的,可能會比實際稍微多一些或者稍微少一些,但會控制在合理的范圍之內
可以用於實現記錄網站每天訪問的獨立IP數量這樣的一個功能