redis資料結構 壓縮列表

2021-08-26 20:49:11 字數 583 閱讀 2901

但凡是名稱中有「壓縮」兩個字的,都是為了節約記憶體。壓縮列表也不例外。

以下是壓縮列表的結構圖

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 內容的...