Redis集群重新分配槽位:面试必问的高频考点解析
2025年Java面试宝典重磅更新!
🔗 链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
🔑 提取码: 9b3g
为什么需要重新分配Redis集群槽位?
当面试官问“Redis集群扩容后如何保证数据均匀分布?”时,槽位重分配就是核心答案。Redis集群将16384个槽位(slots)分给不同节点管理,槽位迁移直接影响数据分布和集群性能。以下三种场景必考:
- 扩容节点:新增节点需分配槽位
- 节点故障:故障节点槽位需转移
- 负载不均:热点数据导致节点压力过大

槽位重分配四步操作(面试口述模板)
▍ 1. 确定迁移计划
# 查看当前槽位分布
redis-cli cluster slots
根据输出结果确定:
- 源节点(迁出槽位的节点)
- 目标节点(接收槽位的节点)
- 迁移的槽位范围(如0-1000)
▍ 2. 执行迁移命令
# 在目标节点执行迁移命令
redis-cli cluster addslots {slot1} {slot2} ... {slotN}
# 在源节点执行迁移命令
redis-cli cluster delslots {slot1} {slot2} ... {slotN}
关键细节必答:
- 迁移时集群处于阻塞状态(ASKING重定向)
- 迁移过程中客户端需处理ASK错误
- 批量迁移建议每次不超过100个槽位
▍ 3. 数据迁移同步
使用MIGRATE命令转移键值数据:
# 迁移单个key(面试需说明实际用脚本批量操作)
MIGRATE target_host target_port "" 0 timeout KEYS key
高频考点:
- 迁移大Key可能导致集群阻塞
- 建议结合
SCAN分批迁移 - 迁移过程中原节点仍可读不可写
▍ 4. 验证迁移结果
# 检查槽位分配状态
redis-cli cluster nodes | grep master
确认目标节点已接管槽位且数据完整性校验通过。

槽位重分配常见坑点(面试加分项)
-
节点握手失败
新节点需先cluster meet加入集群才能接收槽位 -
迁移过程卡顿
大Key迁移阻塞解决方案:- 拆分为多个小Key
- 使用
--cluster-replace参数强制迁移
-
槽位覆盖冲突
若目标节点已有槽位,需先清理冲突槽位 -
数据一致性风险
迁移过程中断可能导致数据丢失,务必开启持久化
运维实战建议
-
迁移前必做:
- 备份集群数据
- 设置
cluster-require-full-coverage no避免全槽位覆盖检查 - 使用
--cluster-use-empty-masters允许空节点接收槽位
-
迁移监控命令:
watch redis-cli cluster info | grep cluster_state
- 自动化工具推荐:
官方redis-cli --cluster reshard可交互式迁移槽位

🚀 面试资源福利
需要系统准备Redis面试题?可前往 面试鸭返利网 获取最新题库。通过本站购买面试鸭会员可享25元返利,助你高效冲刺大厂Offer!
本文涉及关键词统计:Redis集群(8次)、槽位(12次)、槽位迁移(6次)、节点(7次)、数据迁移(5次)


