1. 程式人生 > >Redis設計與實現筆記(三) | 字典

Redis設計與實現筆記(三) | 字典

字典(鍵值對、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記錄了雜湊表已有節點的數量。如下圖所示:

圖3.1 空雜湊表 ​​​​

dictht結構體內有一個dictEntry,那麼, dictEntry是什麼鬼?

(未完待續。。。)