字典,emmm,怎么说呢,不是很能理解,我想想哈,一种用于保存键值对的抽象数据结构。
Redis数据库底层就是字典实现的,毕竟key-value嘛,对数据库的增删改查操作也是构建在字典之上的。
比如
redis> SET msg "hello world"
OK
什么?这不是SDS吗?对,是SDS,但是他们之间的关系呢?key-msg value-" hw ",这个总要保存在字典里吧。
怎么实现?
Redis 的字典使用哈希表作为底层实现, 一个哈希表里面可以有多个哈希表节点, 而每个哈希表节点就保存了字典中的一个键值对。
懂我意思吧
先看看hash表
typedef struct dictht {
// 哈希表数组
dictEntry **table;
// 哈希表大小
unsigned long size;
// 哈希表大小掩码,用于计算索引值
// 总是等于 size - 1
unsigned long sizemask;
// 该哈希表已有节点的数量
unsigned long used;
} dictht;
形象一点
hash表dictht
hash节点
typedef struct dictEntry {
// 键
void *