直接回答

Redis 集群方案主要有三类:主从 + 哨兵(Sentinel)——主从复制保证数据冗余,哨兵负责监控和自动故障转移,解决高可用但不解决数据分片;Redis Cluster——官方分布式方案,16384 个哈希槽(slot)分散在多个主节点上,既高可用又支持水平扩容;以及客户端分片/代理分片(如 Codis、Twemproxy)。

展开解析

哨兵 vs Cluster 的核心区别

| 维度 | 哨兵模式 | Cluster 模式 | |---|---|---| | 解决问题 | 高可用(故障自动切换) | 高可用 + 数据分片 + 在线扩容 | | 数据分布 | 每个节点全量数据 | 按 slot 分片,各节点存部分数据 | | 路由方式 | 客户端连哨兵发现主节点 | 客户端维护 slot 映射,MOVED/ASK 重定向 | | 故障判定 | 哨兵集群投票选主 | 节点间 gossip 通信,半数以上确认客观下线 | | 写能力扩展 | 不能(只有一个主) | 可以(多主并行) |

哨兵适合数据量单机放得下、只需要高可用的场景;数据量大或写 QPS 高时上 Cluster。Cluster 的限制常考:多 key 操作要求 key 在同一 slot(可用 hash tag {} 强制同槽)、不支持多数据库(只有 db0)、跨 slot 事务和 Lua 受限。

追问方向:slot 迁移流程(扩容时 ASK 重定向)、Cluster 脑裂风险与 cluster-require-full-coverage 参数。