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

2021-09-12 02:42:34 字數 700 閱讀 1684

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

跳躍表支援平均(logn)最壞o(n)時間複雜度的查詢。

跳躍表作為有序集合鍵的底層實現之一。

redis兩個地方用到了跳躍表:乙個是實現有序集合鍵、另外乙個是在集群節點中用作內部資料結構,除此之外沒有其他用處了。

redis.h/zksiplistnoderedis.h/zskiplist兩個結構定義。

位於skiplist右方是4個skiplistnode節點,每層是代表層數,右指標右邊跨越數。bw 指向位於當前節點的前乙個節點用於從後往前遍歷時使用。

1、層 扔硬幣法則 冪次定律 只有在1-32之間,所以level[0]就是第一層如此類推。

2、前進指標 每個層都有乙個指向表尾方向的前進指標,用於從表頭向表尾方向訪問節點。

3、跨度 兩個節點之間跨度越大 他們距離得越遠。

指向null的所有前進指標跨度都為0,因為他們沒有連向任何及誒單。

4、後退指標

查詢就是與下乙個比較,如果比它大就繼續向右 如果比它小就向下一層。

跳表和平衡樹的比較:

範圍查詢、簡單、記憶體少、不複雜。跳表就是

redis資料結構分析

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

跳躍表是一種有序的資料結構,通過在每個節點中維持多個指向其他節點的指標,從而達到快速訪問節點的目的.跳躍表支援平均 o logn 最壞 o n 的複雜度節點查詢,還可以通過順序性操作批量節點.節點整體效率接近紅黑樹,且 複雜度低於紅黑樹.跳表的實現思路也類似於紅黑樹,區別於紅黑樹通過大於小於等於某乙...

第五章 跳躍表

跳躍表 skiplist 是一種有序資料結構,它通過在每個節點中維持多個指向其他節點的指標,從而達到快速訪問節點的目的。支援平均o logn 最壞o n 複雜度的節點查詢,還可以通過順序性操作來批量處理節點。redis只在兩個地方用到了跳躍表,乙個是實現有序集合鍵,另乙個是在集群節點中用作內部資料結...

第五章 跳躍表

跳躍表 在每個節點維持多個指向其他節點的指標,達到快速訪問節點的目的。redis使用跳躍表作為有序集合鍵的底層實現之一。zskiplist結構 zskiplistnode結構 5.1.1 跳躍表節點 type struct zskiplistnode level zskiplistnode 1.層跳...