
Redis 的高可用方案有三级:主从复制、哨兵(Sentinel)、集群(Cluster)。很多团队直接上 Cluster,结果被多键操作限制、运维复杂度打个措手不及;也有团队主从跑了好几年靠人肉切换。正确的思路是按「数据规模 + 故障容忍度 + 运维能力」三级演进,不跳级。一、主从复制:最朴素的起点
一主多从,读写分离。解决的是读扩展与数据冗余,但不解决自动故障转移——主挂了要人工提升从库。适合:读多写少、有 DBA 值守、业务能容忍分钟级恢复的场景。关键参数:replicaof 配置、min-replicas-to-write(主库至少 N 个健康从库才接受写,防止脑裂丢数据)。
Sentinel 三节点(奇数)监控主从,主挂后自动选主并通知客户端重新连接。适合:数据量单机可容纳(内存 ≤ 单机可用内存)、写 QPS 单机可扛、需要自动故障转移的绝大多数业务。三个运维要点:
min-replicas-to-write=1 + min-replicas-max-lag=10,把旧主隔离期间接受的写入降到最低(不能完全杜绝,但把丢失窗口压到秒级);replica-priority 排除不适合升主的节点。16384 个 slot 按 hash tag 分片,数据与写入压力分散到多主多从。触发条件:内存超出单机上限或写 QPS 单机扛不住。三个代价要提前接受:
{user1000}.follow)把关联键固定到同一 slot,业务设计期就要规划 key 结构;
云上 Redis(云数据库 Redis 版)默认托管了哨兵/集群的高可用逻辑,还带备份恢复、多可用区容灾——中小团队直接用云托管,把精力留给 key 设计与容量规划。无论哪种方案,两条兜底必须做:定期 RDB/AOF 备份并演练恢复(高可用防机器故障,备份防数据被误删)、关键业务的缓存击穿降级预案(Redis 全挂时业务不能跟着全挂)。

演进路径一句话:数据量单机放得下就用主从+哨兵,放不下再上 Cluster;哨兵解决了「谁当主」,Cluster 解决的是「一台装不下」——不要为了架构先进性提前支付 Cluster 的复杂度。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。