redis的设计原理

1、字典

字典是Redis数据库以及HashTable编码方式的底层实现。一个redisDB就是一个字典;默认是16个redisDB
字典的底层使用散列(数组hashtable),同时使用链地址法的方式解决散列冲突,那么最终就是指针数组的形式,数组中的每个元素都是一个指向DictEntry的指针,这里的hashtable类似于hashmap的扩容方式;通过key进行hash后得出所在数组的位置,然后进行存储,如果出现hash冲突,则是尾插法进行存储;
在这里插入图片描述
1)、Redis使用dictht结构来表示散列表
typedef struct dictht {
dictEntry **table;
unsigned long size;
unsigned long sizemask;
unsigned long used;
}dictht;
table指针:指向散列表的地址。

size属性:存储散列表的大小。

sizemask属性:用于计算索引值。

used属性:散列表中节点的个数。

2)、Redis使用dictEntry结构来表示散列表中的节点
typedef struct dictEntry {
void *key;
union{
void val;
uint_tu64;
int64_ts64;
}v
struct dictEntry next
;
}dictEntry;


版权声明:本文为qq_38166592原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。