MST

星途 面试题库

面试题:Redis Rehash中等难度问题

请简要描述Redis rehash的基本过程,以及在一般业务场景下,它可能对系统稳定性产生哪些较为直接的影响?
12.4万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

Redis rehash基本过程

  1. 分配空间:当Redis需要进行rehash时,会先为新的哈希表分配空间。如果是扩展操作,新哈希表的大小为原哈希表大小的2倍且为2的幂次方;如果是收缩操作,新哈希表的大小为第一个大于等于原哈希表元素数量的2的幂次方。
  2. 迁移数据:将旧哈希表中的所有键值对重新计算哈希值并插入到新哈希表中。这个过程是逐步进行的,Redis采用渐进式rehash,每次处理一个请求时,会从旧哈希表的一个索引位置取出所有键值对迁移到新哈希表,同时更新rehash索引。
  3. 释放旧表:当所有键值对都迁移完成后,释放旧哈希表的内存空间。

对系统稳定性的直接影响

  1. 性能抖动:在渐进式rehash过程中,虽然每次迁移少量数据,但在高并发业务场景下,可能会因为rehash占用部分CPU资源,导致系统响应时间变长,出现性能抖动,影响业务的正常处理。
  2. 内存使用:在rehash完成之前,新旧两个哈希表会同时存在,这会导致短期内内存占用增加,如果系统内存紧张,可能引发内存相关的问题,如内存溢出等,影响系统稳定性。