redis學習計划(八)redis常用數據類型 HyperLoglog


1.HyperLoglog簡介

HyperLoglog是redis新支持的兩種類型中的另外一種(上一種是位圖類型Bitmaps)。主要適用場景是海量數據的計算。特點是速度快。占用空間小。

同樣是用於計算,HyperLoglog在適用場景方面與Bitmaps方面有什么不同呢。我個人的理解是,Bitmaps更適合用於驗證的大數據,比如簽到,

記錄某用戶是不是當天進行了簽到,簽到了多少天的時候。也就是說,你不光需要記錄數據,還需要對數據進行驗證的時候使用Bitmaps。

HyperLoglog則用於只記錄的時候,比如訪問的uv統計。

2.HyperLoglog相關命令

1)

命令:PFADD key element [element ...]

時間復雜度:O(1)

命令描述:將除了第一個參數以外的參數存儲到以第一個參數為變量名的HyperLogLog結構中。這個命令的一個副作用是它可能會更改這個HyperLogLog的內部來反映在每添加一個唯一的對象時估計的基數(集合的基數)。如果一個HyperLogLog的估計的近似基數在執行命令過程中發了變化, PFADD返回1,否則返回0,如果指定的key不存在,這個命令會自動創建一個空的HyperLogLog結構(指定長度和編碼的字符串)。如果在調用該命令時僅提供變量名而不指定元素也是可以的,如果這個變量名存在,則不會有任何操作,如果不存在,則會創建一個數據結構。

返回值:如果 HyperLogLog 的內部被修改了,那么返回 1,否則返回 0 。

 

(2

命令:PFCOUNT key [key ...]

命令描述:當參數為一個key時,返回存儲在HyperLogLog結構體的該變量的近似基數,如果該變量不存在,則返回0。當參數為多個key時,返回這些HyperLogLog並集的近似基數,這個值是將所給定的所有key的HyperLoglog結構合並到一個臨時的HyperLogLog結構中計算而得到的。HyperLogLog可以使用固定且很少的內存(每個HyperLogLog結構需要12K字節再加上key本身的幾個字節)來存儲集合的唯一元素。返回的可見集合基數並不是精確值, 而是一個帶有 0.81% 標准錯誤(standard error)的近似值。

返回值:PFADD添加的唯一元素的近似數量。

 

(3

命令:PFMERGE destkey sourcekey [sourcekey ...]

命令描述:將多個 HyperLogLog 合並(merge)為一個 HyperLogLog , 合並后的 HyperLogLog 的基數接近於所有輸入 HyperLogLog 的可見集合(observed set)的並集。合並得出的 HyperLogLog 會被儲存在目標變量(第一個參數)里面, 如果該鍵並不存在, 那么命令在執行之前, 會先為該鍵創建一個空的。

返回值:這個命令只會返回 OK。

 

 


免責聲明!

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



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