redis HyperLogLog的使用

1、概念
一、redis在2.8.9版本添加了HyperLogLog結構。
二、redis HyperLogLog是用來作基數統計的算法,HyperLogLog的優勢是:在輸入元素的數量或者體積很是很是大時,計算基數所需的空間老是固定的、而且使很小的。
三、在redis裏面,每一個HyperLogLog鍵只須要花費12kb內存,就能夠計算接近2^64個不一樣元素的基數。這和計算基數時,元素越多耗費內存就越多的集合造成鮮明對比。
四、可是,由於HyperLogLog只會根據輸入元素來計算基數,而不會存儲輸入元素自己,因此HyperLogLog不能像集合那樣,返回輸入的各個元素。redis

什麼是基數
好比數據集{1,3,5,7,5,7,8},那麼這個數據集的基數集爲{1,3,5,7,8},基數(不重複元素)爲5.基數估計就是在偏差可接受的範圍內,快速計算基數。算法

2、HyperLogLog相關命令spa

  • 命令名稱:pfadd
  • 語法:pfadd key element [element……]
  • 功能:
    • 將任意數量的元素添加到指定的HyperLogLog裏面。
    • 做爲這個命令的反作用,HyperLogLog內部可能會被更新,以便反映一個不一樣的惟一元素估計數量(也便是集合的基數)。
  • 返回值:
    • 整數回覆:若是HyperLogLog的內部儲存被修改了,那麼返回1,不然返回0.

 

  • 命令名稱:pfcount
  • 語法:pfcount key [key……]
  • 功能:
    • 當pfcount命令做用於當個鍵時,返回儲存在給定鍵的HyperLogLog的近似基數,若是鍵不存在,那麼返回0。
    • 當pfcount命令做用於多個鍵時,返回全部給定HyperLogLog的並集的近似基數,這個近似基數是經過將全部給定HyperLogLog合併至一個臨時HyperLogLog來計算得出的。
  • 返回值:
    • 整數回覆:給定HyperLogLog包含的惟一元素的近似數量。

 

  • 命令名稱:pfmerge
  • 語法:pfmerge destkey sourcekey [sourcekey……]
  • 功能:
    • 將多個HyperLogLog合併(merge)爲一個HyperLogLog,合併後的HyperLogLog的基數接近於全部輸入HyperLogLog的可見集合(observed set)的並集。
  • 返回值:
    • 返回OK
相關文章
相關標籤/搜索