Redis 的發佈與訂閱,慢查詢,監視器等功能也用到了鏈表,Redis服務器自己使用鏈表保存多個客戶端的狀態信息,以及使用鏈表來構建客戶端輸出緩衝區。服務器
l鏈表節點的數據結構定義 數據結構
struct listNode{函數
listNode *prev;spa
listNode *next;指針
void *value; im
}鏈表
數據結構定義以下next
struct list{數據
listNode *head;客戶端
listNode * tail;
unsigned long len; // 鏈表所包含節點的數量
void (*free)(void *ptr) // 節點釋放函數
void *(*dup)(void *ptr) // 節點複製函數
int (*match)(void *ptr,void *key) // 節點值對比函數
}
雙端:獲取某個節點的前置節點和後置節點的時間複雜度都是O(1)
無環:表頭節點的prev指針和表尾節點都指向null
獲取表頭節點和表尾節點的時間複雜度都爲O(1)
獲取節點的數量能夠經過len,時間複雜度都爲O(1)