Redis的Hash Table实现总结

这篇博客详细总结了Redis中Hash Table的数据结构,包括从底层到上层的构成,并探讨了Dict的初始化过程。文章引用了一篇深入介绍Redis键值存储实现的文章作为参考。
摘要由CSDN通过智能技术生成

Hash Table的数据结构从下到上可划分为:

// 存储键值对的地址
typedef struct dictEntry {
   
    void *key;
    union {
   
        void *val;
        uint64_t u64;
        int64_t s64;
        double d;
    } v;
    struct dictEntry *next;
} dictEntry;

// 底层哈希表的定义table是桶(bucket)。sizemask用于映射哈希值到桶中。sizemask = size - 1
typedef struct dictht {
   
    dictEntry **table;
    unsigned long size;
    unsigned long sizemask;
    unsigned long used;
} dictht;

// 高层哈希表的定义,保存两个dictht的目的是为了平滑过度。
typedef struct dict {
   
    dictType *type;
    void *privdata;
    dictht ht[2];
    long rehashidx; /* rehashing not in progress if rehashidx == -1 */
    unsigned long iterators; /* number of iterators currently running */
} dict;

// 记录了dict的一些属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值