JJava 知识库
JAVA INTERVIEW

高频面试题

Redis高级约 2 分钟

Redis 数据量持续增长,需要从单机扩到集群,你会怎么规划分片、扩容和故障转移?

参考回答约 2 分钟 · 口语表达
我的判断

从单机迁到集群要先量化数据与流量,再规划 slot、热点、客户端兼容和双写校验;集群并不会自动消除大 key 与热 key。

我会按未来容量估算节点数,让单主节点的内存和 QPS 保留故障转移余量,并为每个主节点配置跨故障域副本。Redis Cluster 用 16384 个 slot,普通 key 按哈希分布;需要多 key 原子操作时,必须通过 hash tag 让相关 key 在同一 slot,但 tag 不能过粗,否则会制造热点。

迁移前会清点 Lua、事务、批量命令和客户端版本,确认是否支持 MOVED/ASK 重定向。数据迁移采用在线工具或双写:先全量、再增量追平,持续对比 key 数、抽样 value 和业务校验,灰度切读后保留回滚窗口。

扩容搬 slot 时控制带宽与批次,监控延迟、复制积压和集群状态。故障演练会实际停掉主节点,验证选主时间、客户端恢复和是否出现 cluster down。

集群解决总容量和节点故障,不会把一个百万 QPS 的单 key 自动拆到多个节点。热点仍需要业务分散。