redis資料結構 壓縮列表

2022-09-04 19:03:10 字數 843 閱讀 7616

壓縮列表是 redis 為了節約記憶體而開發的。乙個壓縮列表可以包含任意多個節點, 每個節點可以儲存乙個位元組陣列或者乙個整數值。

當乙個列表鍵只包含少量列表項, 並且每個列表項要麼就是小整數值, 要麼就是長度比較短的字串, 那麼 redis 就會使用壓縮列表來做列表鍵的底層實現。

在乙個壓縮列表中, 有多個連續的、長度介於 250 位元組到 250 位元組之間的節點 e1 至 en。此時如果將乙個長度大於等於 254 的新節點 new 放入到 e1 的前置節點位。此時就會發生連鎖更新。

本文參考《redis設計與實現》 

redis資料結構 壓縮列表

但凡是名稱中有 壓縮 兩個字的,都是為了節約記憶體。壓縮列表也不例外。以下是壓縮列表的結構圖 zlbytes zltail zllen entry1 entry2 entryn zlend 說明 屬性 型別長度 用途zlbytes unit32 t 4bit 記錄整個ziplist占用的記憶體位元組...

Redis資料結構 壓縮列表

同整數集合一樣壓縮列表也不是基礎資料結構,而是 redis 自己設計的一種資料儲存結構。它有點兒類似陣列,通過一片連續的記憶體空間,來儲存資料。不過,它跟陣列不同的一點是,它允許儲存的資料大小不同。聽到 壓縮 兩個字,直觀的反應就是節省記憶體。之所以說這種儲存結構節省記憶體,是相較於陣列的儲存思路而...

Redis 資料結構之 壓縮列表

壓縮列表是一塊連續的記憶體空間,元素之間緊挨著儲存,沒有任何冗餘空隙。struct ziplist entry 塊隨著容納的元素型別不同,也會有不一樣的結構。struct entry encoding 字段儲存了元素內容的編碼型別資訊,ziplist 通過這個欄位來決定後面的 content 內容的...