redis底層鍊錶節點使用listnode來實現。
每個listnode節點包含三個成員,乙個prev指標指向前乙個listnode,乙個next指標指向下乙個節點。乙個value指標指向任何型別的值。
多個listnode通過prev和next指標組成雙端鍊錶。
通過乙個list比較方便地來管理產生的listnode鍊錶。
list結構為鍊錶提供了表頭指標head,表尾指標tail,鍊錶長度計數器len。
dup函式用於複製鍊錶節點所儲存的值;
free函式用於釋放鍊錶節點所儲存的值;
match函式用於對比鍊錶節點儲存的值和輸入值是否相等。
鍊錶完整結構如下:
redis鍊錶特性總結如下:
Redis之鍊錶
鍊錶在redis中的應用非常廣泛,列表鍵的底層實現之一就是鍊錶,發布與訂閱 慢查詢 監視器等功能也用到了鍊錶,redis伺服器本身使用鍊錶來儲存多個客戶端的狀態資訊,以及使用鍊錶來構建客戶端輸出緩衝區。鍊錶的實現原始碼 鍊錶節點 typedef struct listnode listnode 鍊錶...
Redis底層資料結構 鍊錶
這是普通的鍊錶實現,鍊錶結點不直接持有資料,而是通過void 指標來間接的指向資料.其實現位於src adlist.h與src adlist.c中,關鍵定義如下 typedef struct listnode listnode typedef struct listiter listiter typ...
redis列表底層實現之一 鍊錶
注意標題中的 之一 那麼什麼情況下,列表會使用鍊錶作為其資料結構呢?答案就是 列表鍵包含了大量的元素,或者列表中包含的元素都是比較長的字串。ok,由於鍊錶大家都比較熟悉,接下來就直接給出鍊錶和鍊錶節點的實現。鍊錶節點 typedef struct listnode listnode 鍊錶 typed...