Redis設計與實現筆記(三) | 字典
阿新 • • 發佈:2018-12-16
字典(鍵值對、KV、對映都是一回事)在redis中有廣泛應用:redis是Key-Value資料庫,就是使用字典作為底層實現的,對資料庫的增刪改查都基於字典實現的。除此之外,redis的雜湊鍵底層使用字典實現,一個雜湊表中包含多個雜湊節點,每個雜湊節點就是一個kv結構,即字典。
由於redis的資料庫的kv結構太複雜了,暫且從雜湊表說起
3.1 雜湊表
雜湊表所使用的字典定義在dict.h/dictht結構體內:
typedef struct dictht{ // 雜湊表陣列 dictEntry **table; //雜湊表大小 unsigned long size; // 雜湊表大小掩碼,用於計算索引值 // 總是等於size-1 unsigned long sizemask; // 該雜湊表已有節點的數量 unsigned long used; }dictht;
說明:table是一個數組,陣列的元素都是一個指向dictEntry結構體的指標,每個dictEntry包含一個鍵值對。size記錄雜湊表的大小,即table陣列的大小,used記錄了雜湊表已有節點的數量。如下圖所示:
dictht結構體內有一個dictEntry,那麼, dictEntry是什麼鬼?
(未完待續。。。)