https://www.cnblogs.com/sfzlstudy/p/16248726.html
why:
Redis的字典使用哈希表作为底层实现。
在字典容量不足,或者使用率非常低的时候,需要做对应的扩容,或者缩容操作。
what:
字典结构如下:
具体代码:
字典(dict)中:type属性和privdata属性是针对不同类型的键值对,而创建多态字典而设置的。
type属性是一个指向dictType结构的指针,每个dictType结构保存了一组用于操作特定类型键值对的函数。Redis会为用途不同的字典设置不同类型的特定函数。
privadata属性则保存了需要传给那些类型特定函数的可选参数。
ht属性是一个包含了两个项的数组,数组中每个项都是一个dictht哈希表,一般情况下,字典只使用ht\[0\]哈希表,而ht\[1\]哈希表只对ht\[0\]哈希表进行rehash时使用。
how:
扩/缩容大小:
如果是扩容操作,ht\[1\]的大小为第一个大于等于ht\[0\].used\*2的2的n次方幂;
如果是收缩操作,ht\[1\]的大小为第一个大于等于ht\[0\].used的2的n次方幂;