Redis設計與實現 2 鍊錶

2022-07-16 10:42:16 字數 592 閱讀 9644

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

作為一種常用資料結構,鍊錶內建在很多高階的程式語言裡面,因為redis使用c語言並沒有內建這種資料結構,所以redis構建了自己的鍊錶實現。

鍊錶在redis中的應用非常多,比如列表鍵的底層實現之一就是鍊錶,發布與訂閱、慢查詢、監視器等功能也用到了鍊錶,redis伺服器本身還是用鍊錶來儲存多個客戶端的狀態資訊,以及使用鍊錶來構建客戶端輸出緩衝區(output buffer)。

每個鍊錶的節點都是乙個adlist.h/ listnode結構

雖然使用多個listnode結構就可以組成鍊錶,但使用adlist.h/ list來持有鍊錶的話,操作起來會更方便。

27 Redis設計與實現 鍊錶

鍊錶提供了高效的節點重排能力,以及順序性的節點訪問方式,並且可以通過增刪節點來靈活地調整鍊錶的長度。作為一種常用資料結構,鍊錶內建在很多高階的程式語言裡面,因為redis 使用的c 語言並沒有內建這種資料結構,所以redis 構建了自己的鍊錶實現。鍊錶在redis 中的應用非常廣泛,比如列表鍵的底層...

Redis設計與實現筆記 3 鍊錶

鍊錶提供了高效的節點重排能力,以及順序性的節點訪問方式,並且可以通過增刪節點來靈活地調整鍊錶的長度。鍊錶在redis中的應用非常廣泛,比如列表鍵 的底層實現之一就是鍊錶。除了鍊錶鍵之外,發布與訂閱,慢查詢,監視器等功能也用到了鍊錶,redis伺服器本身還使用鍊錶來儲存多個客戶端的狀態資訊,以及使用鍊...

Redis設計與實現之SDS和鍊錶

比如我們可以在redis客戶端敲 redis set msg helloredis 那麼就會在redis資料庫中建立乙個新的鍵值對,keg是msg,value是helloredis,兩個都是sds。又比如在redis客戶端敲 redis rpush number 1 2 3這也就是乙個list物件 ...