Redis渐进式rehash过程

Redis 的渐进式 rehash 是在进行哈希表扩容时采用的一种策略,它允许哈希表在进行扩容的同时仍然可以进行正常的读写操作,而不会阻塞整个 Redis 服务。

图片[1]-Redis渐进式rehash过程-不念博客

渐进式rehash过程:

  1. 为新哈希表分配空间:当哈希表需要扩容时,Redis 会创建一个新的更大的哈希表,通常将当前哈希表的大小翻倍。
  2. 将新哈希表设置为主哈希表:将新创建的哈希表设置为主哈希表,并将服务器的 rehashidx 属性设为 0,表示 rehash 过程从索引为 0 的哈希表节点开始。
  3. 在后台逐步迁移数据:Redis 在后台以异步的方式逐步将旧哈希表中的数据迁移到新哈希表。每次迁移一小部分数据,避免对整个数据集进行一次性的复制。
  4. 逐步更新 rehashidx:每次迁移完成后,服务器会逐步增加 rehashidx 的值,表示下次从旧哈希表的下一个索引位置开始继续迁移。
  5. 渐进式 rehash 完成:当 rehashidx 的值增加到哈希表的大小时,表示整个数据集已经迁移完成,新哈希表取代了旧哈希表,rehash 过程完成。

优点:

  • 非阻塞:渐进式 rehash 过程不会阻塞对哈希表的读写操作,使得 Redis 在扩容过程中依然能够提供服务。
  • 逐步迁移:数据迁移是逐步进行的,每次只迁移一小部分数据,避免了一次性大规模的数据复制。
© 版权声明
THE END
喜欢就支持一下吧
点赞94赞赏 分享
评论 抢沙发
头像
欢迎光临不念博客,留下您的想法和建议,祝您有愉快的一天~
提交
头像

昵称

取消
昵称

    暂无评论内容