Redis 數據結構之鏈表

一 使用場景

Redis 的發佈與訂閱,慢查詢,監視器等功能也用到了鏈表,Redis服務器自己使用鏈表保存多個客戶端的狀態信息,以及使用鏈表來構建客戶端輸出緩衝區。服務器

 二 鏈表節點的數據結構

    

  l鏈表節點的數據結構定義   數據結構

 struct listNode{函數

         listNode *prev;spa

         listNode *next;指針

         void *value;  im

 }鏈表

 三 Redis鏈表的數據結構      

 

數據結構定義以下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)

相關文章
相關標籤/搜索