KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA
Redis 部署形态:主从、哨兵与集群 — keel 龙骨
单机 Redis 到生产 Redis 之间隔着三个问题:读撑不住怎么办、主库挂了怎么办、单机内存和 QPS 到顶了怎么办。这门课讲的就是回答这三个问题的三套机制:主从复制(读写分离的地基)、哨兵(自动故障切换)、集群(分片扩容)——以及每一套机制在应用代码里要怎么写,才算真的用上。
单机 Redis 到生产 Redis 之间隔着三个问题:读撑不住怎么办、主库挂了怎么办、单机内存和 QPS 到顶了怎么办。这门课讲的就是回答这三个问题的三套机制:主从复制(读写分离的地基)、哨兵(自动故障切换)、集群(分片扩容)——以及每一套机制在应用代码里要怎么写,才算真的用上。
章节目录
- 00 · 三套部署形态:先决定该上哪一套 — 在动手配任何参数之前,先把三套形态解决的问题分清楚。它们经常被当成"由小到大的三个阶段",但其实是三个不同维度:读写分离解决读压力,哨兵解决主库单点,集群解决单机容量上限。选错的代价不是配置白写,而是架构返工。
- 01 · 主从复制:全量同步与增量同步是怎么跑起来的 — 读写分离、哨兵、集群全都站在同一块地基上:主从复制。这一章把复制连接建立的全过程拆开——为什么有时候是"传一整个 RDB"、有时候是"只传差的那一小段"、以及怎么用两个数字量化"从库落后了多少"。
- 02 · 读写分离:收益在哪、延迟从哪来、「刚写完读不到」怎么解 — 配好主从只是让数据多了一份,它不会自动分担任何读压力。把读打到从库是客户端的事——这一章就讲客户端怎么做,以及做完之后必然出现的那个问题:刚写完的数据,从库上还没有。
- 03 · 哨兵:从"主库挂了"到"客户端跟上新主"的完整链路 — 主从复制让数据多了一份,但主库挂了之后谁来选新主、谁来告诉客户端地址变了?哨兵干的就是这件事。这一章沿一次真实发生的切换往下走:谁先发现、怎么达成共识、怎么选新主、切换时写入怎样、以及最关键的一环——客户端怎么知道。
- 04 · 高可用的诚实边界:什么会丢、锁什么时候失效 — 第 03 章把切换跑通了,但"能自动切换"不等于"数据安全"。这一章专讲哨兵方案做不到的事:异步复制必然存在的丢数据窗口、网络分区下的脑裂、以及一个很容易被忽略的连锁反应——切换会让分布式锁失效。
- 05 · 集群分片:槽、hash tag、MOVED 与客户端路由表 — 前四章的方案里,数据始终只有"一份完整副本",受限于单机内存。集群是唯一能把数据分到多台机器上的形态。这一章讲它的分片规则(16384 个槽)、请求送错节点时 Redis 怎么回答(MOVED)、客户端怎么自己算地址,以及上集群必须接受的三个能力损失。
- 06 · 在线扩容:槽是怎么搬家的,ASK 与 MOVED 有何不同 — 集群真正的价值不只是"能分片",而是能在线重新分片。这一章把槽迁移的五步完整跑一遍(含真实输出),重点讲迁移进行中请求会碰到什么——那个与 MOVED 长得像、语义却完全不同的 ASK——以及迁移中断后怎么收拾残局。
- 07 · 生产落地:监控指标、故障手册与四类角色的形态选择 — 最后一章把前六章收成能直接用的东西:该盯哪些指标、出问题先查什么、以及回到第 00 章那四类 Redis 角色(缓存 / 队列 / 锁 / 事件流),逐个说明它们该配哪种形态、代码上要注意什么。