数据结构
动态字符串SDS
redis中保存的Key是字符串,value大多也是字符串或字符串集合,因此字符串是Redis中最常使用的一种数据结构。...不过Redis没有直接使用C语言中的字符串,因为C语言字符串存在很多问题:
获取字符串长度需要的复杂度为O(N)
非二进制安全,C语言使用空字符’\0’作为字符串结尾的标记,如果保存的字符串本身含义该标记...,数组中保存的是指向entry的指针
dictEntry **table;
//哈希表的大小
unsigned long size;
//哈希表大小的掩码,总是等于size...,设置rehash进度
ht[0]数组中元素转移到ht[1]
交换ht[0]和ht[1]指针指向,然后rehash标记设置为-1表示rehash结束
渐进式rehash
上面列出的rehash...,但与传统链表相比有几点差异:
元素按照升序排列存储
节点可能包含多个指针,指针跨度不同
Redis使用跳跃表作为有序集合键,如果一个有序集合包含的元素数量很多,或者有序集合中元素成员是比较长的字符串