天天看點

redis特殊資料類型HyperLogLog (基數)

redis特殊資料類型HyperLogLog (基數)

Redis HyperLogLog 是用來做基數統計的算法,HyperLogLog 的優點是,在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定的、并且是很小的。在 Redis 裡面,每個 HyperLogLog 鍵隻需要花費 12 KB 記憶體,就可以計算接近 2^64 個不同元素的基數。這和計算基數時,元素越多耗費記憶體就越多的集合形成鮮明對比。但是,因為 HyperLogLog 隻會根據輸入元素來計算基數,而不會儲存輸入元素本身,是以 HyperLogLog 不能像集合那樣,傳回輸入的各個元素。

什麼是基數

比如資料集 {1, 3, 5, 7, 5, 7, 8}, 那麼這個資料集的基數集為 {1, 3, 5 ,7, 8}, 基數(不重複元素)為5。

基數估計就是在誤差可接受的範圍内,快速計算基數。

常用指令

指令 說明
PFadd key element1, element2 … 增加1個基數集合
PFcount key 統計基數集合中的元素數量
PFmerge keyDist key1 key2 … 合并基數集合

示例

127.0.0.1:6379> PFadd mykey1 a b c d e a d
(integer) 1
127.0.0.1:6379> PFadd mykey2 e f c m n a f
(integer) 1
127.0.0.1:6379> PFcount mykey1
(integer) 5
127.0.0.1:6379> PFcount mykey2
(integer) 6
127.0.0.1:6379> PFmerge mykey mykey1 mykey2
OK
127.0.0.1:6379> PFcount mykey
(integer) 8

           

繼續閱讀