国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展

這篇具有很好參考價值的文章主要介紹了深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

前言

Stream

geospatial

HyperLogLog

Bitmaps

Bitfields


前言


redis 中最關(guān)鍵的五個數(shù)據(jù)類型 String、List、Hash、Set、Zset 應(yīng)用最廣泛,同時 redis 也推出了額外的 5 個數(shù)據(jù)類型,他們分別是針對特殊場景才進行的應(yīng)用的.

深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

Ps:這幾種類型的具體使用不用記,記你也記不住,因為不常用,因此我們只需要了解其對應(yīng)的應(yīng)用場景,需要的時候去官方文檔一查就清楚了~

Stream


深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

Stream 就是一個阻塞隊列,是 redis 作為消息隊列的重要支撐,屬于是 List 的 blpop / brpop 的升級版本.

Stream 類型,按照官方文檔的意思,就是用來模擬實現(xiàn)事件傳播機制~??

事件是什么?例如以下兩個場景:

  1. epoll / io 多路復用:每次網(wǎng)卡 / socket 上有可讀可寫的數(shù)據(jù),都會通過這種事件回調(diào)的機制來通知到咱們的應(yīng)用程序代碼.
  2. JS:點擊事件、鍵盤事件、窗口大小改變 / 位置改變事件.

簡單來講,就是有些操作,我們也不知道什么時候出現(xiàn),只能等這個事件出現(xiàn)之后,再采取動作.

geospatial


深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

?用來存儲坐標,就是經(jīng)緯度的.

存儲了一些點之后,就可以讓用戶給定一個坐標,去剛才存儲的點中查找(按照半徑,矩形區(qū)域...),這個功能在 “地圖” 應(yīng)用中非常重要~

深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

HyperLogLog


深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

應(yīng)用場景只有一個,就是用來估算集合中元素的個數(shù).

Set 有一個應(yīng)用場景就是統(tǒng)計 UV(多少個不同用戶進行了訪問) ,但問題在于一旦數(shù)據(jù)非常大,Set 就會消耗很多的內(nèi)存空間~

假設(shè) Set 存儲 userId,每個按照 8 字節(jié)計算,1億 UV = 8 億字節(jié),相當于 800 MB,而使用 HyperLogLog 最多會使用 12KB 的空間.

Ps:HyperLogLog 不存儲元素的內(nèi)容,但是能夠記錄 “元素的特征”(具體實現(xiàn),看源碼才知道,核心思路是“位操作”),從而在新增元素的時候,能夠知道新增元素,是一個存在的元素,還是一個新元素~

因此,HyperLogLog 只用來計數(shù)(記錄當前集合有多少個不同的元素 => 多少個不同用戶訪問了你這個服務(wù)器),但是不能告訴你這些元素是啥~

Bitmaps


深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

?使用 bit 位來表示整數(shù),存儲的底層數(shù)據(jù)結(jié)構(gòu)式位圖~

位圖的本質(zhì)還是一個集合,屬于式 Set 類型針對整數(shù)優(yōu)化的特殊版本(節(jié)省空間)

對比 HyperLogLog:

HyperLogLog 既可以存儲數(shù)字也可以存儲字符串,但是不存儲元素內(nèi)容,只是計數(shù)效果,因此 hyperloglog 存儲元素,提取特征的過程是不可逆的(信息丟失),例如給你個豬肉,可以做成火腿腸,但是給你火腿腸是還原不回豬肉的。

Bitfields

深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

bitfields 和 C 語言中的位域是很相似的~

bitfield 可以理解成一串二進制序列(字節(jié)數(shù)組),同時可以把這個字節(jié)數(shù)組中的幾個位,賦予特殊的含義,并可以進行 讀取/修改/算數(shù)運算 等操作.

位域相比較 String / hash 來說,目的是為了節(jié)省空間.

使用場景就是游戲中的殺怪計數(shù):

深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫

深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展,學習,redis,數(shù)據(jù)庫文章來源地址http://www.zghlxwxcb.cn/news/detail-613211.html

到了這里,關(guān)于深入學習 redis - Stream、Geospatial、HyperLogLog、Bitmap、Bitfields 類型擴展的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 探索Redis特殊數(shù)據(jù)結(jié)構(gòu):Geospatial(地理位置)在實際中的應(yīng)用

    探索Redis特殊數(shù)據(jù)結(jié)構(gòu):Geospatial(地理位置)在實際中的應(yīng)用

    Redis官方提供了多種數(shù)據(jù)類型,除了常見的String、Hash、List、Set、zSet之外,還包括Stream、Geospatial、Bitmaps、Bitfields、Probabilistic(HyperLogLog、Bloom filter、Cuckoo filter、t-digest、Top-K、Count-min sketch、Configuration)和Time series。這些數(shù)據(jù)類型在Redis的數(shù)據(jù)結(jié)構(gòu)中發(fā)揮著各自獨特的作用。

    2024年02月20日
    瀏覽(29)
  • Redis中3大特殊數(shù)據(jù)結(jié)構(gòu)(2)-HyperLogLog

    Redis中3大特殊數(shù)據(jù)結(jié)構(gòu)(2)-HyperLogLog

    HyperLogLog算法是法國人Philippe Flajolet 教授發(fā)明的一種 基數(shù)計數(shù)概率算法 ,每個 HyperLogLog 鍵只需要花費 12 KB 內(nèi)存 ,就可以計算接近 2^64 個 不同元素 的基數(shù)。HyperLogLog 適用于 大數(shù)據(jù)量的去重統(tǒng)計 ,HyperLogLog 提供 不精確的去重計數(shù)方案 ,雖然不精確但是也不是非常不精確,

    2024年02月11日
    瀏覽(42)
  • Redis--HyperLogLog的指令語法與使用場景舉例(UV統(tǒng)計)

    Redis--HyperLogLog的指令語法與使用場景舉例(UV統(tǒng)計)

    前言 Redis除了常見的五種數(shù)據(jù)類型之外,其實還有一些少見的數(shù)據(jù)結(jié)構(gòu),如Geo,HyperLogLog等。雖然它們少見,但是作用卻不容小覷。本文將介紹HyperLogLog指令的語法和使用場景。 HyperLogLog介紹 HyperLogLog是Redis提供的一種不準確(標準誤差為0.81%)的去重計數(shù)方案。 提到去重計數(shù)

    2024年01月21日
    瀏覽(64)
  • Redis:原理速成+項目實戰(zhàn)——Redis企業(yè)級項目實戰(zhàn)終結(jié)篇(HyperLogLog實現(xiàn)UV統(tǒng)計)

    Redis:原理速成+項目實戰(zhàn)——Redis企業(yè)級項目實戰(zhàn)終結(jié)篇(HyperLogLog實現(xiàn)UV統(tǒng)計)

    ?????作者簡介:一位大四、研0學生,正在努力準備大四暑假的實習 ??上期文章:Redis:原理速成+項目實戰(zhàn)——Redis實戰(zhàn)14(BitMap實現(xiàn)用戶簽到功能) ??訂閱專欄:Redis:原理速成+項目實戰(zhàn) 希望文章對你們有所幫助 這篇是實戰(zhàn)部分的終結(jié)篇,其實Redis的核心操作,主要是

    2024年01月17日
    瀏覽(25)
  • Redis教程——Redis bitmap位圖操作(圖解)

    Redis教程——Redis bitmap位圖操作(圖解)

    在平時開發(fā)過程中,經(jīng)常會有一些 bool 類型數(shù)據(jù)需要存取。比如記錄用戶一年內(nèi)簽到的次數(shù),簽了是 1,沒簽是 0。如果使用 key-value 來存儲,那么每個用戶都要記錄 365 次,當用戶成百上億時,需要的存儲空間將非常巨大。為了解決這個問題,Redis 提供了位圖結(jié)構(gòu)。 位圖(

    2024年01月21日
    瀏覽(21)
  • Redis - Bitmap

    操作String數(shù)據(jù)類型的key所存儲的字符串指定偏移量上的位,返回原位置的值 優(yōu)點: 節(jié)省空間通過一個bit位來表示某個元素對應(yīng)的值或者狀態(tài),其中key就是對應(yīng)元素的值。實際上8個bit可以組成一個Byte,所以是及其節(jié)省空間的 效率高setbit 和 getbit的時間復雜度都是O(1),其他位運

    2024年02月15日
    瀏覽(19)
  • Redis的BitMap使用

    Redis 為我們提供了位圖這一數(shù)據(jù)結(jié)構(gòu),每個用戶每天的登錄記錄只占據(jù)一位,365天就是365位,僅僅需要46字節(jié)就可存儲,極大地節(jié)約了存儲空間。 位圖不是實際的數(shù)據(jù)類型,而是一組面向位的操作 在被視為位向量的字符串類型上定義。 由于字符串是二進制安全 blob,其最大長

    2024年02月07日
    瀏覽(23)
  • redis之Bitmap

    redis之Bitmap

    位圖數(shù)據(jù)結(jié)構(gòu)其實并不是一個全新的玩意,我們可以簡單的認為就是個數(shù)組,只是里面的內(nèi)容只能為0或1而已(二進制位數(shù)組)。 GETBIT 用于返回位數(shù)組在偏移量上的二進制位的值。 值得我們注意的是, GETBIT 的時間復雜度是 O(1) 。 GETBIT 命令的執(zhí)行過程如下: 計算?(即 3 ),by

    2024年02月15日
    瀏覽(11)
  • Redis之bitmap類型解讀

    目錄 基本介紹 基本命令? Setbit? Getbit? BITCOUNT? 應(yīng)用場景 統(tǒng)計當日活躍用戶 用戶簽到 bitmap - Redis布隆過濾器 (應(yīng)對緩存穿透問題) 基本介紹 Redis 的位圖(bitmap)是由多個二進制位組成的數(shù)組,只有兩種狀態(tài),0和1, 數(shù)組中的每個二進制位都有與之對應(yīng)的偏移量(從 0 開始)

    2024年02月11日
    瀏覽(19)
  • Redis的3大特殊數(shù)據(jù)類型(1)-BitMap

    Redis的3大特殊數(shù)據(jù)類型(1)-BitMap

    BitMap(位圖/位數(shù)組) 是Redis2.2.0版本中引入的一種新數(shù)據(jù)類型,該數(shù)據(jù)類型本質(zhì)是一個 僅含0和1 的二進制字符串。因此可以把 Bitmap 想象成一個 以位為單位的數(shù)組 ,數(shù)組的每個單元 只能存儲 0 和 1 ,數(shù)組的下標在 Bitmap 中叫做偏移量 offset,bitmap默認值都為0. BitMap底層實際上使

    2024年02月11日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包