KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

Redis 部署形态课 · 课程导读 — keel 龙骨

Redis 部署形态:主从、哨兵与集群 的参考信息:Redis 部署形态课 · 课程导读

单机 Redis 到生产 Redis 之间隔着三个问题:读撑不住怎么办、主库挂了怎么办、单机内存和 QPS 到顶了怎么办。这门课讲的就是回答这三个问题的三套机制:主从复制(读写分离的地基)、哨兵(自动故障切换)、集群(分片扩容)——以及每一套机制在应用代码里要怎么写,才算真的用上。

你现在的起点

如果你符合这三条,这门课就是为你写的。

一条能走通的学习路径

00 三套形态与选型(先搞清楚该上哪一套,再动手)
  → 01 复制是怎么跑起来的(全量/增量、replid/offset/backlog、WAIT)
  → 02 读写分离(收益、延迟、写后读不一致与应用侧解法)
  → 03 哨兵切换(判定 → 选举 → 提升 → 客户端如何跟上)
  → 04 高可用的诚实边界(丢数据窗口、脑裂、锁在切换后失效)
  → 05 集群分片(槽、hash tag、MOVED/ASK、多键限制)
  → 06 在线扩容与槽迁移(迁移期间请求怎么处理、中断怎么办)
  → 07 生产落地(监控指标、故障手册、四类角色的形态选择)

本课的实验证据

正文里的命令输出都在本机实测过,环境是 Redis 5.0.14.1(Windows 构建)与 redis-py 8.1.0。两个版本差异会在正文里显式标注:

全课共用一个主案例

一个内容站点,Redis 承担四类角色:

角色 典型 key 关心什么
缓存 article:{1001}:detail 读 QPS 高,能容忍短暂陈旧
队列(ARQ) arq:job:{id}、Stream arq:queue 不能丢任务、不能重复执行
锁 lock:index:{1001} 互斥必须成立,切换后还成立吗
事件流 site:events(Stream) 断线可续、顺序

后面每一章的现场、破坏实验和验收,都回到这四类 key 上,看同一套形态对它们各自意味着什么。

三个必须先纠偏的认知

  1. 读写分离不是配出来的,是路由出来的。复制只负责把数据搬过去,把读打到从库是应用客户端的事——不理解这点,就会出现「配好了主从,压力还全在主库」。
  2. 高可用不等于不丢数据。复制是异步的,主库返回 OK 时从库可能还没收到。哨兵解决的是「多久恢复可写」,不是「写入是否安全」。
  3. 集群主要解决容量问题,不是高可用的升级版。集群自带副本切换,但它真正的买点是分片;如果瓶颈只是读 QPS,主从加哨兵就够了,上集群反而会失去多键操作和事务的能力。

学完这门课你能做什么

前置要求

进入 keel 阅读