目录
一、前言
在字典中,一个键(key)可以和一个值( value)进行关联。这些关联的键和值就称为键值对。字典中的每个键都是独一无二的,程序可以在字典中根据键查找与之关联的值,或者通过键来更新值,又或者根据键来删除整个键值对,等等。
字典在 Redis中的应用相当广泛,比如Redis的数据库就是使用字典来作为底层实现的,对数据库的增、删、查、改操作也是构建在对字典的操作之上的。
除了用来表示数据库之外,字典还是哈希键的底层实现之一,当一个哈希键包含的键值对比较多,又或者键值对中的元素都是比较长的字符串时, Redis就会使用字典作为哈希键的底层实现。
二、字典的实现
Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。
(1)哈希表
typedef struct dictht{
dictEntry **table//哈希表数组
unsigned long size;//哈希表大小
unsigned ling sizemask;//哈希表大小掩码,用于计算索引值
unsigned long used;//该哈希表已有节点的数量
}dictht;
这里比较难理解的是table,table属性是一个数组,数组中的每个元素都是一个指向dict