什么是渐进式rehash

2020-10-30  本文已影响0人  StevenHD

一、Java中的做法

当新添加元素的时候,元素的总个数超过了阈值的时候,会搞一个2倍大小的数组。


阻塞态

二、Redis中的做法

何时发生扩容

元素的个数和数组长度一致的时候

什么是扩容

扩容就是把数组2号初始化一个2倍的数组

并且rehashidx从-1修改为0
此时,当前字典就进入了rehash的状态

三、现在又要进行增加一个元素

四、假设接下来又需要查询

一直反复直到数组1号元素的个数为0,代表rehash完成
此时,就需要把数组1号的指针替换为数组2号,再把数组2号的指针重新置为NULL,最后把rehashidx置为-1。(这样,就完成了redis字典的rehash)

rehash后的操作
上一篇 下一篇

猜你喜欢

热点阅读