怎么规划redis集群
2025/12/21大约 2 分钟
怎么规划redis集群
面试口述要点(约 1 分钟)
规划 Redis 集群要从“容量、吞吐、可用性、运维成本”四维度平衡:
- 拓扑与分片:采用 Redis Cluster,设置主从架构(每主≥1从),分片数≈主节点数(覆盖 16384 槽,均衡映射),主从跨机架/跨可用区部署,避免同故障域。
- 容量估算:单节点可用内存≈机器内存的 60%~70%(预留复制/AOF/碎片),总数据量=平均 Key 大小×Key 数×副本因子;建议单节点数据≤30~50GB,控制碎片率与 RDB/AOF 重写成本。
- 吞吐与延迟:读写命令占比、Pipeline/批量、网络带宽(建议万兆)、磁盘类型(NVMe 优于 SATA);读可放从但注意一致性与延迟,写走主。
- 高可用策略:副本因子 RF=2/3,主从反亲和;
min-replicas-to-write与min-replicas-max-lag保证写安全;cluster-require-full-coverage根据业务选择严格一致或降级运行。 - 持久化与备份:AOF everysec + 定期 RDB(或混合持久化);冷备存储 + 定期演练恢复;监控复制延迟与 AOF 重写时间。
- 扩容与迁移:
add-node/reshard渐进迁槽,控制迁移速率与批量,客户端需支持 MOVED/ASK;大 Key 拆分、热点分桶,避免迁移/复制阻塞。 - 观测与演练:关注延迟、慢查询、槽覆盖、内存碎片率、复制偏移,定期演练主故障与迁槽流程,完善告警与容量门限。
相关高频面试题与简答
问:主节点数量与槽分配如何确定?
答:主节点数≈分片数,至少 3 个以上以容错;初始均衡分配 16384 槽,避免热点节点,后续用reshard动态平衡。问:副本因子选 2 还是 3?
答:通用业务 RF=2;核心链路建议 RF=3 且跨机架/可用区,结合min-replicas-to-write降低主从异步复制下的数据丢失风险。问:跨槽多键操作怎么办?
答:使用 hash tag(如{user123})确保相关键同槽同节点;无法同槽时在业务侧拆分,避免事务与 Lua 跨节点不一致。问:持久化如何取舍?
答:AOF everysec 兼顾可靠与性能,配合周期 RDB/混合持久化;大内存场景关注 AOF 重写与 RDB 生成的资源占用,备份走从节点或影子节点。问:扩容对业务有何影响,如何操作?
答:通过redis-cli --cluster reshard渐进迁槽,客户端跟随 MOVED/ASK;控制每批迁移 Key 数量与速率,观测延迟与复制压力。问:如何治理热点与大 Key?
答:热点用分桶(如多分片计数)、限流与多级缓存;大 Key拆分为集合/分片存储并限制单值大小;监控大 Key 报告并定期清理。