如何在Bucket Size变化的时候,继续提供服务?

老师,您在说rehashing的过程中,把slot的数量翻倍。那么之后, 什么叫从后往前拷贝。把所有新size下index 是2N - 1的数据都移动到2N-1处?怎么做这个事呢,挨个遍历元素么,然后看新size下的余数是不是2N - 1?

您说这样不会有复写的问题,这是为什么呢。 因为如果是取余的方法,每一个老的位置里的元素在翻倍之后,要么留下要么平移到+ N的slot里面,基本上都是平行移动。为什么会出现复写的问题呢?除非是不是不一定是取余的算法?

另外,什么叫两种哈希算法同时读写?意思是新来了个写请求,要用两个算法写两遍?这不make sense吧,还是说写的算法去新的哈希算法写就完了。 读还可以理解,读两个slot,看有没有结果。

如果是rehashing过程中,继续接受服务,我没弄清楚怎么叫同时用两个算法读和写。什么时候算是个结尾,说rehashing完事了,不用再两个算法一块用了呢?

这是什么系统的design ?

复写这里指的是 in-place。如果少于2N,就有复写的问题,不能in-place,需要额外内存。用两种哈希算法是为了在复写过程中继续提供服务,rehash 完了以后就不用两种了。

分布式缓存