但凡是名稱中有「壓縮」兩個字的,都是為了節約記憶體。壓縮列表也不例外。
以下是壓縮列表的結構圖
zlbytes
zltail
zllen
entry1
entry2
...entryn
zlend
說明:屬性
型別長度
用途zlbytes
unit32_t
4bit
記錄整個ziplist占用的記憶體位元組數
zltail
unit32_t
4bit
記錄ziplist表尾節點距離列表的起始位址有多少個位元組
zllen
unit16_t
2bit
記錄ziplist的節點數量
zlentry
列表節點
節點zlend
unit8_t
1bit
特殊值0xff(255),用於標記壓縮列表的末端
其中entry的結構如下
typedef struct zlentry zlentry;
Redis資料結構 壓縮列表
同整數集合一樣壓縮列表也不是基礎資料結構,而是 redis 自己設計的一種資料儲存結構。它有點兒類似陣列,通過一片連續的記憶體空間,來儲存資料。不過,它跟陣列不同的一點是,它允許儲存的資料大小不同。聽到 壓縮 兩個字,直觀的反應就是節省記憶體。之所以說這種儲存結構節省記憶體,是相較於陣列的儲存思路而...
redis資料結構 壓縮列表
壓縮列表是 redis 為了節約記憶體而開發的。乙個壓縮列表可以包含任意多個節點,每個節點可以儲存乙個位元組陣列或者乙個整數值。當乙個列表鍵只包含少量列表項,並且每個列表項要麼就是小整數值,要麼就是長度比較短的字串,那麼 redis 就會使用壓縮列表來做列表鍵的底層實現。在乙個壓縮列表中,有多個連續...
Redis 資料結構之 壓縮列表
壓縮列表是一塊連續的記憶體空間,元素之間緊挨著儲存,沒有任何冗餘空隙。struct ziplist entry 塊隨著容納的元素型別不同,也會有不一樣的結構。struct entry encoding 字段儲存了元素內容的編碼型別資訊,ziplist 通過這個欄位來決定後面的 content 內容的...