天天看點

redis新資料類型-HyperLogLog

菜鳥教程:https://www.runoob.com/redis/redis-hyperloglog.html

簡介

Redis 在 2.8.9 版本添加了 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。 基數估計就是在誤差可接受的範圍内,快速計算基數。

指令

# 添加指定元素到 HyperLogLog 中,添加元素時計數發生變化傳回1、否則傳回0
pfadd <key>< element> [element ...]

# 計算HLL的近似基數,可以計算多個HLL,比如用HLL存儲每天的UV,
# 計算一周的UV可以使用7天的UV合并計算即可
pfcount <key> [key ...]

# 将一個或多個HLL合并後的結果存儲在另一個HLL中,
# 比如每月活躍使用者可以使用每天的活躍使用者來合并計算可得
pfmerge <destkey> <sourcekey> [sourcekey ...]

           

繼續閱讀