Redis的鏈表底層結構

主要構成:list結構+listNode結構,Redis鏈表的特性也是和這兩個結構及其各個的屬相字段相關的。

listNode結構

list結構

雖然多個listNode節點就可以連成鏈表,但是引入list結構後,操作活更加的方便,所有redis的鏈表一般是如下圖所示:

從上面的鏈表結構圖,我們可以輕易的總結出鏈表的特點

1:雙端。listNode節點之間是一個雙向鏈表,即每一個節點都有next和pre指針,這樣就可以將獲取某個節點的前驅或者後繼值的複雜度降爲O(1)。

2:list結構中含有head和tail指針,這樣對鏈表頭節點和尾節點的獲取的時間複雜度爲O(1)。

3:list結構中含有len,這樣對鏈長度的獲取的時間複雜度爲O(1)。(有點類似於sds中獲取長度)

4:無環。即不是循環的。這樣對鏈表的遍歷的中止條件是以NULL中止。注意和循環雙向鏈表的區別。

5:多態:list結構含有三個特定函數,執行對應的特定操作。

 

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