Redis HyperLogLog學習記錄

2021-10-05 17:49:20 字數 966 閱讀 2731

之前在說redis集合資料結構的時候,我們知道集合中儲存的是互不相同的元素,它的sadd命令用來新增元素,scard命令用來獲取集合中元素的數量,故我們可以利用從該命令製作乙個「唯一計數器」。例如記錄乙個**的ip訪問量。但是當乙個**熱度很高被大規模訪問時,我們要記錄更長時間的訪問量(例如一年),那如果再使用集合製作的唯一計數器來計數的話,將會非常的吃記憶體資源,且效能大幅度下降。這時我們就需要hyperloglog幫忙了。

hyperloglog是一種為了計算集合的基數而建立的概率演算法,它能得到乙個集合的近似基數,且這個近似基數與實際基數的誤差在乙個合理的範圍內。

hyperloglog的優點在於它計算近似基數的記憶體並不會因為集合的大小而改變,它進行計算所需的記憶體總是固定並且非常少的(實際上乙個hyperloglog只占用12kb記憶體空間就可以對2^64個元素進行計數,而演算法的誤差率只有0.81%)。

pfadd

pfadd hyperloglog element [element ...]
對給定的乙個或多個元素進行計數,若給定的所有元素已進行過計數,則命令返回0,若至少有乙個未進行過計數,則命令返回1。該命令也可以用來去重(即判斷元素是否已計過數)。

pfcount

pfcount hyperloglog [hyperloglog ...]
得到集合的近似基數。當該命令後跟多個hyperloglog時,則得到這多個hyperloglog並集計算後的近似基數。

pfmerge

prmerge destination hyperloglog [hyperloglog ...]
計算多個hyperloglog的並集,並將計算後的hyperloglog儲存到名為destination的鍵中。實際上pfcount命令內部就使用了pfmerge命令。

hyperloglog是一種概率演算法,它用來得到集合的近似基數,它主要的用法是用來計數;也可用來進行去重;它不能得到集合中的成員。

redis HyperLogLog 基數估算

hyperloglog 可以接受多個元素的輸入,返回輸入元素的基數估算值 基數,集合中不同元素的數量。如集合的基數是4。估算,hyperloglog演算法返回的基數不是完全精確的,但會控制在合理的範圍內。hyperloglog不會儲存輸入的多個元素,只返回估算的基數 127.0.0.1 6379 p...

tensorflow windows 學習記錄

1.python 版本3.7.1,安裝tensorflow.pip install tensorflow pip install numpy upgrade 2.檢視tensorflow 版本 進入python後 import tensorflow as tf tf.version 3.conda的...

ingress controller學習記錄

按文件操作 wgetwget 在service的spec中將nodeport固定一下。deploy demo.yaml的內容 結果 此時,訪問nodeip nodeport已經可以看到輸出,如圖 建立ingress root master ingress nginx kubectl get ingr...