Redis中什么是渐进式rehash?

提问者:帅平 问题分类:面试刷题
Redis中什么是渐进式rehash?
1 个回答
满天都是派星べ
满天都是派星べ
渐进式rehash是Redis中一种用于对hash表进行扩容和缩容的操作方法。
通常在对hash表进行扩容时,需要一下几个步骤:
创建一个新的hash表,大小通常是原始hash表的两倍。
将原始hash表中的数据迁移到新hash表中。

这中间会存在一个问题:如果要一次性把哈希表中的数据都迁移完,会造成 Redis 线程阻塞(在迁移期间要保证数据一致性,所以写操作会阻塞)。
为了避免阻塞,Redis在扩容时是这样操作的:
创建一个新的hash表,大小通常是原始hash表的两倍。
每次迁移一个槽位的数据。
新写入的数据直接存储在新hash表中。

这样的话,就避免了一次性、集中式地完成rehash动作导致的长时间阻塞,影响用户体验。而在此期间,客户端访问数据时,会同时在两个hash表中查找数据,不会存在因迁移而导致数据不一致问题。
发布于:4周前 (04-23) IP属地:四川省
我来回答