Redisbook學習筆記(2)內存映射數據結構(1)壓縮列表

Ziplist 是由一系列特殊編碼的內存塊構成的列表,一個ziplist 能夠包含多個節點(entry),每數組

個節點能夠保存一個長度受限的字符數組(不以\0 結尾的char 數組)或者整數,包括:ide

字符數組編碼

– 長度小於等於63 (26 1)字節的字符數組spa

– 長度小於等於16383 (214 1)字節的字符數組3d

– 長度小於等於4294967295 (232 1)字節的字符數組blog

整數ip

– 4 位長,介於0 至12 之間的無符號整數內存

– 1 字節長,有符號整數v8

– 3 字節長,有符號整數get

– int16_t 類型整數

– int32_t 類型整數

– int64_t 類型整數

由於ziplist 節約內存的性質,它被哈希鍵、列表鍵和有序集合鍵做爲初始化的底層實現來使

ziplist 的構成

wKiom1L3NyDQJjR8AADlJ6QNttg129.jpg

wKioL1L3N4mzGe1lAARLB_KiIg0575.jpg


wKiom1L3N2ziBKoGAALDv8EHmUU314.jpg

小結

ziplist 是由一系列特殊編碼的內存塊構成的列表,它能夠保存字符數組或整數值,它仍是

哈希鍵、列表鍵和有序集合鍵的底層實現之一。

ziplist 典型分佈結構以下:

wKioL1L3OAbQ7URnAACwi4LzTa4973.jpg

ziplist 節點的分佈結構以下:

wKiom1L3OEbRcPr3AABOAaDIVG4939.jpg

添加和刪除ziplist 節點有可能會引發連鎖更新,所以,添加和刪除操做的最壞複雜度爲

O(N2) ,不過,由於連鎖更新的出現機率並不高,因此通常能夠將添加和刪除操做的復

雜度視爲O(N) 。


這部分有點不太懂,回頭須要複習啊!!!

相關文章
相關標籤/搜索