《Redis設計與實現》第3章 鏈表

    鏈表在Redis中的應用非常廣泛,比如列表鍵的底層實現之一就是鏈表。

    除了列表鍵之外,發佈與訂閱、慢查詢、監視器等功能也用到了鏈表,Redis服務器本身還使用鏈表來保存多個客戶端的狀態消息,以及使用鏈表來構建客戶端輸出緩衝區(output buffer)。

3.1 鏈表和鏈表節點的實現

       鏈表使用adlist.h/listNode結構來表示。

    多個listNode可以通過prev和next指針組成雙端鏈表。


    雖然僅使用多個listNode結構就可以組成鏈表,但使用adlist.h/list來持有鏈表的話,操作起來會更方便:

       dup函數用於複製鏈表節點所保存的值;

       free函數用於釋放鏈表節點所保存的值;

       match函數則用於比對鏈表節點所保存的值和另一個輸入值是否相等;

    Redis的鏈表的特性總結:雙端、無環、帶表頭指針和表尾指針、帶鏈表長度計數器、多態。

    多態:鏈表節點使用void*指針來保存節點值。

3.2 鏈表和鏈表節點的API



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