redis HyperLogLog的使用


一、概念
1、redis在2.8.9版本添加了HyperLogLog結構。
2、redis HyperLogLog是用來做基數統計的算法,HyperLogLog的優點是:在輸入元素的數量或者體積非常非常大時,計算基數所需的空間總是固定的、並且使很小的。
3、在redis里面,每個HyperLogLog鍵只需要花費12kb內存,就可以計算接近2^64個不同元素的基數。這和計算基數時,元素越多耗費內存就越多的集合形成鮮明對比。
4、但是,因為HyperLogLog只會根據輸入元素來計算基數,而不會存儲輸入元素本身,所以HyperLogLog不能像集合那樣,返回輸入的各個元素。

什么是基數
比如數據集{1,3,5,7,5,7,8},那么這個數據集的基數集為{1,3,5,7,8},基數(不重復元素)為5.基數估計就是在誤差可接受的范圍內,快速計算基數。

二、HyperLogLog相關命令

  • 命令名稱: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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM