redis命令之-hyperloglog

小亮520cl發表於2015-09-07

HyperLogLog

pfadd
pfcount

PFADD key element [element ...]

將任意數量的元素新增到指定的 HyperLogLog 裡面。

作為這個命令的副作用, HyperLogLog 內部可能會被更新, 以便反映一個不同的唯一元素估計數量(也即是集合的基數)。

如果 HyperLogLog 估計的近似基數(approximated cardinality)在命令執行之後出現了變化, 那麼命令返回 1 , 否則返回 0 。 如果命令執行時給定的鍵不存在, 那麼程式將先建立一個空的 HyperLogLog 結構, 然後再執行命令。

呼叫 PFADD 命令時可以只給定鍵名而不給定元素:

  • 如果給定鍵已經是一個 HyperLogLog , 那麼這種呼叫不會產生任何效果;
  • 但如果給定的鍵不存在, 那麼命令會建立一個空的 HyperLogLog , 並向客戶端返回 1 。

redis> PFADD  databases  "Redis"  "MongoDB"  "MySQL"
(integer) 1

redis> PFCOUNT  databases
(integer) 3

redis> PFADD  databases  "Redis"    # Redis 已經存在,不必對估計數量進行更新
(integer) 0

redis> PFCOUNT  databases    # 元素估計數量沒有變化
(integer) 3

redis> PFADD  databases  "PostgreSQL"    # 新增一個不存在的元素
(integer) 1

redis> PFCOUNT  databases    # 估計數量增一
4

pfmerge

PFMERGE destkey sourcekey [sourcekey ...]

將多個 HyperLogLog 合併(merge)為一個 HyperLogLog , 合併後的 HyperLogLog 的基數接近於所有輸入 HyperLogLog 的可見集合(observed set)的並集。


redis> PFADD  nosql  "Redis"  "MongoDB"  "Memcached"
(integer) 1

redis> PFADD  RDBMS  "MySQL" "MSSQL" "PostgreSQL"
(integer) 1

redis> PFMERGE  databases  nosql  RDBMS
OK

redis> PFCOUNT  databases
(integer) 6






來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29096438/viewspace-1793382/,如需轉載,請註明出處,否則將追究法律責任。

相關文章