Redis HyperLogLog
Redis HyperLogLog 是用來做基數(shù)統(tǒng)計的算法,HyperLogLog 的優(yōu)點是,在輸入元素的數(shù)量或者體積非常非常大時,計算基數(shù)所需的空間總是固定 的、并且是很小的。
什么是基數(shù)?
比如數(shù)據(jù)集 {1, 3, 5, 7, 5, 7, 8}, 那么這個數(shù)據(jù)集的基數(shù)集為 {1, 3, 5 ,7, 8}, 基數(shù)(不重復元素)為5。 基數(shù)估計就是在誤差可接受的范圍內(nèi),快速計算基數(shù)。
1 PFADD key element [element ...]
添加指定元素到 HyperLogLog 中。
redis 127.0.0.1:6379> PFADD hll1 foo bar zap a
(integer) 1
redis 127.0.0.1:6379> PFADD hll2 a b c foo
(integer) 1
2 PFCOUNT key [key ...]
返回給定 HyperLogLog 的基數(shù)估算值。
redis 127.0.0.1:6379> PFCOUNT hll1
(integer) 4
3 PFMERGE destkey sourcekey [sourcekey ...]
將多個 HyperLogLog 合并為一個 HyperLogLog
redis 127.0.0.1:6379> PFMERGE hll3 hll1 hll2
OK
redis 127.0.0.1:6379> PFCOUNT hll3
(integer) 6
重復的會覆蓋,不重復計數(shù)。