Redis的quicklist vs ziplist

    ziplist是壓縮列表,是list和hash的底層實現。

    ziplist

    是redis爲節約內存佔用而設計的一種線性數據結構

  1. zlbytes:記錄整個ziplist佔用的內存數
  2. zltail:記錄壓縮列表尾節點和起始地址有多少字節數,通過這個偏移量,不用逐個遍歷,就可以獲取尾節點的位置
  3. zllen:記錄壓縮列表中含有的節點數
  4. zlend:特殊標記,0xFF用於標記壓縮列表的末端

    壓縮列表的各個節點組成,如下,previous_entry_length是前一個節點的長度,用於從後向前遍歷,encoding裏面存儲當前節點的長度的數據類型,content是實際存儲數據的部分

 

    quicklist

    ziplist是內存緊湊型存儲,但由於使用一維線性數據結構,當數據量大時,更新時內存重新分配,會涉及大數據量的遷移,所以quicklist用ziplist組成雙向列表,列表中的每個節點都是ziplist

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章