《Redis數(shù)據(jù)結(jié)構(gòu)——HyperLogLog》要點(diǎn):
本文介紹了Redis數(shù)據(jù)結(jié)構(gòu)——HyperLogLog,希望對您有用。如果有疑問,可以聯(lián)系我們。
HyperLogLog布局用于統(tǒng)計(jì)基數(shù),因?yàn)榛鶖?shù)是不重復(fù)的,所以一個(gè)大的數(shù)據(jù)集,其基數(shù)會(huì)小很多,占用很少的空間.
HyperLogLog的尺度錯(cuò)誤是1.04 / sqrt(m),其中“m”是使用的寄存器數(shù).
Redis使用16384個(gè)寄存器,因此尺度錯(cuò)誤為0.81%.
由于Redis實(shí)現(xiàn)中使用的散列函數(shù)具有64位輸出,并且我們使用14位的散列輸出來尋址16k寄存器,所以剩下50位,所以我們可以遇到的最長的零運(yùn)行將適合一個(gè)6位寄存器.這便是為什么Redis HyperLogLog值僅對16k寄存器使用12k字節(jié)的原因.
由于使用了64位輸出功能,對付我們可以計(jì)算的集合的基數(shù)沒有實(shí)際的限制.此外值得注意的是,非常小的基數(shù)的誤差往往很小.
命令前綴為“PF”,以紀(jì)念Philippe Flajolet,后半部分則比擬容易記住:PFadd-增加,PFcount-統(tǒng)計(jì),PFmerge-合并.
hyperloglog示例以下:
歡迎參與《Redis數(shù)據(jù)結(jié)構(gòu)——HyperLogLog》討論,分享您的想法,維易PHP學(xué)院為您提供專業(yè)教程。
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/10673.html