Redis設計與實現 筆記 第五章 跳躍表

2021-10-02 20:56:13 字數 582 閱讀 4552

跳躍表是一種有序的資料結構,通過在每個節點中維持多個指向其他節點的指標,從而達到快速訪問節點的目的.

跳躍表支援平均 o(logn) , 最壞 o(n) 的複雜度節點查詢,還可以通過順序性操作批量節點.

節點整體效率接近紅黑樹,且**複雜度低於紅黑樹.

跳表的實現思路也類似於紅黑樹,區別於紅黑樹通過大於小於等於某乙個節點,跳表是通過判斷目標值是否在兩個節點之間來確定區間,進而進行範圍縮小,從而進一步找到目標節點.

跳躍表的實現

/*

* 跳躍表節點

*/typedef struct zskiplistnode level;

} zskiplistnode;

/* * 跳躍表

*/typedef struct zskiplist zskiplist;

總結

書裡描述的跳躍表在實際過程中的執行過程和跳躍表的組成邏輯,其中分值是通過雜湊演算法來進行確認的,如果分值相同,將通過物件大小來進行排序.

類似於 list , 雖然乙個 zskiplistnode 就可以完成跳表, redis 依然額外構造了 zskiplist 來優化跳躍表的快速使用

《Redis設計與實現》第五章 跳躍表

跳表是一種有序的資料結構,它通過在每個節中維持多個指向其他節點的指標,從而達到快速訪問節點的目的。跳躍表支援平均 logn 最壞o n 時間複雜度的查詢。跳躍表作為有序集合鍵的底層實現之一。redis兩個地方用到了跳躍表 乙個是實現有序集合鍵 另外乙個是在集群節點中用作內部資料結構,除此之外沒有其他...

《Redis實戰》筆記 第五章

本章主要講述了redis的幾個應用場景。使用redis記錄日誌 在linux中有兩種記錄日誌的方式,一種是將其記錄到檔案中,乙個又乙個的新增日誌行以及檔案,包括redis在內的軟體都使用這種方式。另一種是使用syslog服務,除了儲存日誌,syslog還負責日誌的輪換和刪除,syslog的 功能可以...

筆記 《Linux核心設計與實現》第五章系統呼叫

目前正在通讀 linux核心設計與實現 一書,本文是對第五章 系統呼叫 的總結。1.系統呼叫是什麼?由核心提供的一組介面,在linux中,系統呼叫是使用者空間訪問核心的唯一手段 除異常和陷入外,它們是核心唯一的合法入口。2.與庫函式和應用程式介面 api 有怎樣的關係?3.如何增加系統呼叫?3.1 ...