Redis源码剖析 字典 结构 ( dict.h/dict.c)
字典又称为符号表、关联数组 、或者映射。是一种用于保存键值对(key-value)的抽象结构数组。 例如:Redis中所有key到value的映射,就是通过字典结构维护,还有hash类型的键值。 1、Redis中字典的实现 Redis的字典是由哈希表实现的,一个哈希表有多个节点,每个节点保存一个键值对。 1.1哈希表(dict.c/dict.h) typedef struct dictht{ dictEntry** table;//存放一个数组的地址,数组中存放哈希节点dictEntry的地址 unsingned long size;//哈希表table的大小,出始大小为4 unsingned long sizemask;//用于将hash值映射到table位置的索引,大小为(size-1) unsingned long used;//记录哈希表已有节点(键值对)的数量 }dictht; 1.2哈希表节点 typedef struct dictEntry{ void *key; //key union{ void* val; uint64_t u64; int64_t s64; double d; }v; //val struct dictEntry *next; //指向下一个节点,用来解决 哈希冲突 }dictEntry; 1.3字典 typedef struct dict{