原文:redis源碼學習-skiplist

.初步認識跳躍表 圖中所示,跳躍表與普通鏈表的區別在於,每一個節點可以有多個后置節點,圖中是一個 層的跳躍表 傳統意義的單鏈表是一個線性結構,向有序的鏈表中插入一個節點需要O n 的時間,查找操作需要O n 的時間。如果我們使用圖中所示的跳躍表,就可以減少查找所需時間為O n ,因為我們可以先通過每個節點的最上面的指針先進行查找,這樣子就能跳過一半的節點。比如我們想查找 ,首先和 比較,大於 之 ...

2018-07-26 14:36 0 4244 推薦指數:

查看詳情

Redis源碼剖析之跳表(skiplist)

最近要換新工作了,借着新老工作交替的這段窗口放松了下,所以專欄拖更了,不過我心里毫無愧疚,畢竟沒人催更。 不過話說回來天天追劇 刷綜藝的日子也很是枯燥,羡慕你們這些正常上班的人,每天都有正經工作 ...

Mon Nov 23 01:28:00 CST 2020 0 580
RedisSkipList數據結構

0.前言 Redis中有序集合zset需要使用skiplist作為存儲數據結構, 關於skiplist數據結構描述可以查詢wiki, 本文主要介紹Redis實現的skiplist的細節. 1.數據結構定義 2.創建跳躍表 創建跳躍表過程比較簡單, 初始化zskiplist數據結構 ...

Thu Oct 29 05:49:00 CST 2015 0 2316
redis源碼學習-dict

1.字典相關的幾個結構體 2.動態擴容方法 int dictRehash(dict *d, int n)    為了對dictht進行動態擴容,reha ...

Thu Jul 26 20:32:00 CST 2018 0 4228
從零開始學習redis源碼

  2020的開年是比較艱難的,爆發了肺炎疫情,希望大家多注意安全,也希望疫情早日好轉!   以3.2版本的源碼為例,開始講解,有時會貼出源碼,進行說明,並會注明源碼出處。   數據庫   應該都知道默認redis會有16個庫,是根據配置文件來的,可以通過select命令來切換數據庫。那原理 ...

Sun Feb 16 00:06:00 CST 2020 0 839
一起學習redis源碼

redis的一些介紹,麻煩閱讀前面的幾篇文章,想對redis的詳細實現有所了解,強力推薦《redis設計與實現》(不僅僅從作者那兒學習redis的實現,還有項目的管理、思想等,作者可能比你我都年輕歐)。如果閱讀了上面的文檔,激起你對redis的強力好奇,那么就只能閱讀源碼了。不管是在校學生 ...

Tue Jun 03 06:28:00 CST 2014 1 4373
Redis學習之SDS源碼分析

一.SDS的簡單介紹 SDS:簡單動態字符串(simple dynamic string) 1)SDS是Redis默認的字符表示,比如包含字符串值的鍵值對都是在底層由SDS實現的 2)SDS用來保存數據庫中的字符串值 3)SDS被用作緩沖區:比如AOF模塊的AOF緩沖區,以及客戶端 ...

Sat Apr 20 18:53:00 CST 2019 0 1200
redis 有序集合數據結構實現 skiplist

Redis使用跳躍表作為有序集合鍵的的底層實現,如果一個有序集合包含的元素數量比較多,又或者有序集合中元素的成員是比較長的字符串時Redis就會使用跳躍表 來作為有序集合鍵的底層實現 Redis只在兩個地方用到了跳躍表,一個是實現有序集合鍵,另一個是在集群節點中用作內部數據結構 跳躍表 ...

Fri Jan 05 02:25:00 CST 2018 0 3772
redis-15 zset 底層跳表 skiplist 實現

簡介   我們知道 Redis 中有五種基本結構,其中有一個叫 有序列表zset 的數據結構,它類似於 Java 中的 SortedSet 和 HashMap 的結合體,一方面它是一個 set 保證了內部 value 的唯一性,另一方面又可以給每個 value 賦予一個排序的權重值 score ...

Fri May 29 07:54:00 CST 2020 0 983
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM