簡介:
HyperLogLog是redis在2.8.9版本添加的一種新的結(jié)構(gòu)。
Redis-HyperLogLog是用來做基數(shù)統(tǒng)計的算法,其最大的優(yōu)點就是:在輸入元素的數(shù)量或者體積非常非常大的時候,計算基數(shù)需要的空間總是固定的,并且很小。在redis中,每一個HyperLogLog只需要12KB內(nèi)存,就可以計算接近2^64個不同元素的基數(shù),這與元素越多耗費內(nèi)存越大的集合形成了一個鮮明的對比。但是HyperLogLog只會根據(jù)輸入元素來計算基數(shù),不會存儲輸入元素本身,所以HyperLogLog不能和集合一樣,返回輸入的各個元素。
什么是基數(shù)?基數(shù)就是一個數(shù)據(jù)集中元素個數(shù)(重復元素只算一個)。
命令介紹:
1)pfadd
可用版本: >=2.8.9
時間復雜度: 每添加一個元素復雜度為O(1)
命令格式: pfadd key element [element ...]
作用:
將任意數(shù)量的元素添加到指定的HyperLogLog中。(HyperLogLog內(nèi)部可能會被更新,以便反映一個不同唯一元素估計數(shù)量,即集合基數(shù))
返回值:
如果HyperLogLog估計的近似基數(shù)在命令執(zhí)行之后出現(xiàn)了變化,返回1,不然返回0。
注意:
如果指定HyperLogLog不存在的話,默認原始值為一個空HyperLogLog結(jié)構(gòu)。
可以沒有element參數(shù),表示只是創(chuàng)建一個空的HyperLogLog結(jié)構(gòu)。創(chuàng)建成功返回1。
2)pfcount
可用版本: >=2.8.9
時間復雜度: O(N),N為指定HyperLogLog的個數(shù)
命令格式: pfcount key [key ...]
作用:
獲取所有給定HyperLogLog的并集的近似基數(shù),這個近似基數(shù)帶有0.81%標準錯誤的近似值。
返回值:
返回所有給定HyperLogLog的并集的近似基數(shù),只有一個key的話,就是這個key的近似基數(shù),如果這一個key也不存在的話,返回0。
3)pfmerge
可用版本: >=2.8.9
時間復雜度: O(N),N為被合并的HyperLogLog數(shù)量
命令格式: pfmerge destkey sourcekey [sourcekey ...]
作用:
將多個HyperLogLog合并成一個,合并之后得到的HyperLogLog保存在destkey中,如果不存在的話,就會創(chuàng)建它。
返回值:
返回OK
|
|