昨天分析完adlist的redis**,今天馬上馬不停蹄的繼續學習redis**中的雜湊部分的結構學習,不過在這裡他不叫什麼hashmap,而是叫dict,而且是一種全新設計的一種雜湊結構,他只是通過幾個簡單的結構體,再搭配上一些比較常見的雜湊演算法,就實現了類似高階語言中hashmap的作用了。也讓我見識了一些雜湊演算法的實現,比如dbj hash的演算法實現,俗稱times33,演算法,就是不停的*33,。這種算是一種超級簡單的雜湊演算法。
下面說說給我感覺redis**中雜湊實現的不是那麼簡單,中間加了一些東西,比如說dicttype定義了一些字典集合操作的公共方法,我把dict叫做字典總類,也可以說字典操作類,真正存放鍵值對的叫dictentry,我叫做字典集合,字典集合存放在雜湊表中,叫dictht,下面給出一張結構圖來理理思路。
下面給出2個檔案的**解析:
dict.h:
dict.c;
redis原始碼剖析 dict
typedef struct dictentry v struct dictentry next dictentry typedef struct dicttype dicttype this is our hash table structure.every dictionary has two ...
redis原始碼之dict
大家都知道redis預設是16個db,但是這些db底層的設計結構是什麼樣的呢?我們來簡單的看一下原始碼,重要的字段都有所注釋 typedef struct redisdb redisdb redis中的所有kv都是存放在dict中的,dict型別在redis中非常重要。字典disc的資料結構如下 t...
Redis原始碼 dict資料結構(實現)
本文分析的是src dict.c檔案。從結構上來說,可以分為 1.私有函式 以下劃線開頭的一般都是,一般都是一些輔助函式 2.公開api。從功能來說,可以分為 1.dict初始化 析構 2.元素操作 查詢 刪除 插入 替換 修改值 清空資料 3.遍歷dict,迭代器相關 比如需要持久化雜湊表的資料時...