Redis跳表學習

2021-10-05 15:23:22 字數 389 閱讀 3419

參考:

redis 的跳躍表由 redis.h/zskiplistnode 和 redis.h/zskiplist 兩個結構定義, 其中zskiplistnode結構用於表示跳躍表節點, 而zskiplist結構則用於儲存跳躍表節點的相關資訊, 比如節點的數量, 以及指向表頭節點和表尾節點的指標, 等等。

圖 5-1 展示了乙個跳躍表示例, 位於最左邊的是 zskiplist 結構, 該結構包含以下屬性:

位於 zskiplist 結構右方的是四個 zskiplistnode 結構, 該結構包含以下屬性:

redis 資料結構 跳表

要先有跳表的資料結構基礎 跳表是鍊錶的乙個變種,通過增加多餘的指標,將單向鍊錶變成多向鍊錶,進而使跳表的查詢效率和平衡二叉樹看齊 平均o logn 最壞o n 而且較之二叉樹實現方便。而跳表本身,有一些比較迷的實現策略 比如,新增節點的層次是通過隨機數 拋硬幣 指定的,存在乙個隨機概率,這在redi...

Redis原始碼筆記 跳表

redis 只有在 zset 物件的底層實現用到了跳表,跳表的優勢是能支援平均 o logn 複雜度的節點查詢。zset 物件是唯一乙個同時使用了兩個資料結構來實現的 redis 物件,這兩個資料結構乙個是跳表,乙個是雜湊表。這樣的好處是既能進行高效的範圍查詢,也能進行高效單點查詢。zset 物件能...

從跳表到Redis有序集合

spark原始碼閱讀系列停更了好久,因為一直沒能達到想要的效果。寫了一篇spark物理計畫生成,讀下來味同嚼蠟,暫時不打算放出來了。最近偶然遇到 如何閱讀乙份源 文中說 寫 是表達自己,讀 是在理解別人 我想既然沒有理解別人,為什麼要寫一篇水文欺騙自己呢?最近開始看kafka的書,書裡面提到kafk...