
一、为什么 Redis 需要高可用Redis 数据在内存中。如果 Redis 宕机用户请求 ↓ Redis不可用 ↓ 业务失败例如用户无法登录缓存全部失效请求大量访问 MySQL所以生产环境需要数据备份故障自动恢复横向扩展二、Redis 主从复制Master-Slave⭐⭐⭐⭐什么是主从复制一个 Redis 作为主节点Master多个 Redis 作为从节点Slave结构写 | ↓ Master ↓ ↓ Slave Slave主节点负责写数据例如SET user:1 Tom从节点负责同步数据读请求例如GET user:1三、为什么需要主从复制主要解决1. 读压力问题例如100 万查询全部访问 Master压力大。改成Master ↓ ↓ ↓ Slave Slave Slave多个节点分担查询。2. 数据备份Master 数据自动同步到 Slave。四、主从复制的问题主从有一个问题Master 挂了怎么办例如Master ❌ Slave 继续运行但是没有节点自动变成新的 Master。所以需要Sentinel哨兵五、Redis Sentinel哨兵⭐⭐⭐⭐⭐什么是哨兵Sentinel 是 Redis 的监控系统。负责检测 Redis 状态自动故障转移选举新的 Master结构Sentinel ↓ Master ❌ ↓ Slave升级 ↓ 新Master哨兵工作流程监控 Master↓发现 Master 宕机↓判断是否真的故障↓选择 Slave↓提升为 Master六、Redis Cluster集群⭐⭐⭐⭐⭐为什么需要 Redis Cluster哨兵解决单个 Redis 挂掉但是如果数据太大怎么办例如10TB 数据一台 Redis 放不下。Redis Cluster解决数据分片结构Redis Cluster ┌────┐ ┌────┐ ┌────┐ Node1 Node2 Node3数据分散用户数据 ↓ Node1 商品数据 ↓ Node2七、Redis 三种架构区别架构解决问题主从复制数据备份、读扩展Sentinel自动故障恢复Cluster数据分片、水平扩展八、Redis 为什么性能高主要原因1. 数据在内存MySQL磁盘Redis内存速度更快。2. 单线程模型Redis 核心命令单线程执行。避免线程切换开销。3. 高效数据结构例如HashZSetBitmap底层优化。4. IO 多路复用Redis 可以同时处理大量连接。九、企业 Redis 性能优化1. 合理设置 Key推荐user:1001 order:10001不要a1 b22. 控制 Key 大小不要user:list:all存百万用户。应该分页。3. 避免 KEYS *错误KEYS *原因会阻塞 Redis。推荐SCAN4. 设置合理 TTL避免内存无限增长大量旧数据存在5. 避免大 Value例如错误user:list 100万个用户JSON应该拆分存储。十、企业 Redis 架构示例大型系统应用服务 ↓ Redis Cluster ┌────┬────┬────┐ Node1 Node2 Node3 ↓ MySQL十一、本章总结技术作用主从复制数据同步Sentinel自动故障转移Cluster数据分片TTL控制数据生命周期SCAN安全遍历 Key合理 Key提高维护性本章一句话总结主从解决读扩展哨兵解决故障恢复Cluster 解决数据容量和水平扩展。思考题精简回答为什么 Redis 生产环境不能只部署一个实例因为单实例存在宕机风险、数据丢失风险、性能瓶颈。生产环境需要高可用和扩展能力。主从复制解决了什么问题数据备份、读压力分担。Master 负责写Slave 同步数据并提供读取。Sentinel哨兵相比主从复制增加了什么能力自动监控、故障检测、自动选举新 Master。解决 Master 宕机后无法自动恢复的问题。Redis Cluster 为什么需要数据分片因为单台 Redis内存有限、存储容量有限、性能有限。Cluster 可以把数据分散到多个节点实现水平扩展。Redis 为什么比 MySQL 快主要原因Redis 数据存储在内存、减少磁盘 IO、数据结构高效、单线程避免线程切换开销、使用 IO 多路复用处理大量连接为什么生产环境禁止使用KEYS *因为KEYS *会扫描所有 Key是阻塞操作。当数据量大时会导致 Redis 停顿影响线上请求。主从复制、Sentinel、Cluster 三者分别解决什么问题主从保证数据复制哨兵保证高可用Cluster 保证大规模扩展。