redis--內部結構--ziplist

來源:互聯網
上載者:User

壓縮列表是列表鍵和雜湊鍵的底層實現之一。
壓縮列表是Redis為了節約記憶體而開發的,是由一系列特殊編碼的連續記憶體塊組成的順序型資料結構。
1、壓縮列表的構成


2、壓縮列表節點的構成

<1>previous_entry_length
以位元組為單位,記錄了壓縮列表中前一個節點的長度。可以是1位元組或者5位元組;前一個節點小於254Byte就可以用1位元組儲存,前一個位元組大於等於254Byte就可以用5位元組儲存它的長度。利用這個長度,可以將壓縮列表從頭遍曆到尾,或者從給定指標遍曆到頭或者尾;
<2>encoding
記錄了節點的content屬性所儲存資料的類型以及長度;一位元組、兩位元組、五位元組長;值的最高位為00、01、10表示的是位元組數組編碼;除了最高位記錄的類型,剩下的位記錄的是位元組數組的長度;一位元組,值的最高位以11開頭,表示整數編碼;
<3>content
儲存節點的值;

3、連鎖更新
為了滿足前一節點,擴增當前節點,最後導致整個列表的每個節點都得更新節點的大小,這就是連鎖更新;新增或者刪除節點都有可能引起連鎖更新。
導致連鎖更新的原因:
<1>首先,壓縮列表裡要恰好有多個連續的、長度介於250位元組至253位元組之間的節點,連鎖更新才有可能發生,在實際中,這種情況並不多見;
<2>其次,即使出現連鎖更新,但只要被更新的節點的數量不多,就不會對效能造成任何影響;

引用《Redis設計與實現》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.