码上敲享录 > Redis面试题 > 什么是Redis渐近式 rehash?

什么是Redis渐近式 rehash?

上一章章节目录下一章 2023-07-15已有279人阅读 评论(0)

Redis的渐进式rehash是指在进行字典扩容(rehash)时,Redis将扩容操作分批进行,以避免一次性耗费大量CPU时间导致请求被阻塞。


在Redis中,当字典的负载因子(load factor)超过一定阈值时,会触发字典的扩容操作,即将现有的哈希表数组进行扩容,以减少哈希冲突,提高字典的性能。


渐进式rehash的过程如下:


1. Redis创建一个新的空哈希表(新哈希表)作为扩容时的目标哈希表。


2. Redis每次从旧哈希表中取出一部分键值对,并将其重新计算哈希值,然后插入到新哈希表中。这一步是逐步迁移键值对的过程。


3. 在渐进式rehash的过程中,Redis维护一个索引器(index)来记录当前扩容的进度。


4. Redis在每次执行指令时,会先从旧哈希表查找键值对,如果找不到,则从新哈希表中查找。这样,即使哈希表正在扩容,业务仍然可以继续进行,避免了请求的阻塞。


5. 当所有键值对都从旧哈希表迁移到新哈希表后,Redis会将新哈希表替换旧哈希表,完成扩容过程。此时,索引器指向新的哈希表。


通过渐进式rehash,Redis能够平滑地将大量键值对从旧哈希表迁移到新哈希表,减少一次性扩容带来的阻塞风险,保证服务的稳定性和可用性。


0

有建议,请留言!

  • *您的姓名:

  • *所在城市:

  • *您的联系电话:

    *您的QQ:

  • 咨询问题:

  • 提 交