Redis資料結構 二 鍊錶

2021-09-19 09:56:21 字數 580 閱讀 5873

鍊錶提供了高效的節點重排能力, 以及順序性的節點訪問方式, 並且可以通過增刪節點來靈活的調整鍊錶的長度

列表鍵的底層實現之一就是鍊錶. 當乙個列表鍵包含了數量比較多的元素, 又或者列表中包含的元素都是比較長的字串時, redis就會使用鍊錶作為列表鍵的底層實現

除了列表鍵之外, 發布與訂閱, 慢查詢, 監視器等功能頁用到了鍊錶,redis伺服器本身還使用鍊錶儲存多個客戶端的狀態資訊, 以及使用鍊錶來構建客戶端輸出緩衝區(output buffer)

1.實現

typedef

struct listnode listnode;

多個listnode可以通過prev和next指標組成雙端鍊錶

僅僅通過多個listnode結構就可以組成鍊錶, 但是用adlist.h/list來持有鍊錶的話,操作起來會更方便:

typedef

struct list list;

list結構為鍊錶提供了表頭指標head, 表尾指標tail, 以及鍊錶長度計數器len,而dup, free和match成員則是用於實現多型鍊錶所需要的型別特定函式

2.特點

Redis資料結構 鍊錶

文章導航 readmeredis鍊錶為雙向無環鏈表!redis之資料結構篇 簡單動態字串sds提到redis使用了簡單動態字串,鍊錶,字典 雜湊表 跳躍表,整數集合,壓縮列表這些資料結構來操作記憶體,並且簡單介紹了redis簡單動態字串。本篇文章我們繼續來分析鍊錶。鍊錶是一種非常常見的資料結構,在r...

Redis資料結構之鍊錶

鍊錶基礎知識 鍊錶是一種物理儲存單元上非連續 非順序的儲存結構,資料元素的邏輯順序通過鍊錶中的指標鏈結次序來實現。其內部是由一系列的資料節點組成,資料節點可以動態分配。鍊錶與陣列的比較 陣列可以隨機訪問,鍊錶只能順序訪問。鍊錶容量可以動態擴充陣列不可以,鍊錶新增資料元素,不需要資料的移動。陣列新增元...

Redis資料結構 鍊錶 linkedlist

鍊錶簡介 因為c語言沒有內建鍊錶這種資料結構,所以redis構建了自己的鍊錶實現。列表鍵的底層實現之一就是鍊錶。當乙個列表鍵包含了數量比較多的元素,又或者列表中包含的元素都是比較長的字串時,redis就會使用鍊錶作為列表鍵的底層實現。1 鍊錶實現 鍊錶結點資料結構 雖然使用多個listnode結構就...