Redis 的設計與實現——數據結構實現之(四)壓縮列表

Ziplist 是Redis中對於少量列表項的實現用於hash和list的實現,是由連續的內存塊組成的數據結構,主要是爲了節約內存,沒有一個struct:

其中每個節點的entry的值爲:

其中previous_entry_length用於保存前一個節點的長度,當前一個結點長度在254之內,則該屬性只有一個字節,否則該屬性由5個字節組成,其中第一個字節爲0XFE。這個屬性當然是爲了從後向前對列表進行遍歷了。

連鎖更新

       什麼是連鎖更新呢?就是列表突然插入一個長度大於254的元素(或者突然刪除一個小元素)導致的節點長度的連鎖更新,這樣會導致O(N^2)的時間複雜度,也就是最壞情況下的時間複雜度。

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