主题
速查表:六篇文档核心知识点
| 序号 | 文档 | 知识点 | 一句话总结 |
|---|---|---|---|
| 1 | BRPOP 深度解析 | BRPOP vs RPOP | 空队列时 BRPOP 阻塞等待,RPOP 立即返回 nil |
| 2 | BRPOP 深度解析 | 多 key 优先级 | 按声明顺序从左到右检查,左边有就不查右边 |
| 3 | BRPOP 深度解析 | timeout=5 | 每 5 秒回到循环,能响应 Ctrl+C |
| 4 | BRPOP 深度解析 | 返回值 | tuple(队列名, 元素值) 或 None |
| 5 | BRPOP 深度解析 | LPUSH 返回值 | 列表长度,不是推入的值 |
| 6 | BRPOP 深度解析 | FIFO 队列 | LPUSH + BRPOP = 左推右弹 = 先进先出 |
| 7 | 单线程与多客户端交互 | 多进程 → 单线程 | N 个进程的命令在 Redis 主线程串行执行 |
| 8 | 单线程与多客户端交互 | 等待链表节点 | 每个节点 = 一个 TCP 连接 = 一个 client 结构体 |
| 9 | 单线程与多客户端交互 | BRPOP 不阻塞主线程 | 服务端加入等待链表后立即处理下一条命令 |
| 10 | 单线程与多客户端交互 | 连接池 | 每个进程独立,进程内复用,进程间不共享 |
| 11 | 单线程与多客户端交互 | fork 陷阱 | fork 复制 fd,两个进程操作同一个 socket 会错乱 |
| 12 | 单线程与多客户端交互 | Redis 6.0 多线程 | 只加速网络 I/O,命令执行仍单线程 |
| 13 | 原子性保证机制 | 四层保证 | 单线程 → 命令原子 → 等待链表 FIFO → 事件循环串行 |
| 14 | 原子性保证机制 | LPUSH 唤醒 | 插入元素 → 检查等待链表 → 发给第一个等待者 → break |
| 15 | 原子性保证机制 | 批量 LPUSH | 3 个元素会逐轮唤醒 3 个 Worker |
| 16 | 原子性保证机制 | 超时原子性 | 超时和 LPUSH 不可能同时执行,Redis 会按事件循环顺序串行处理 |
| 17 | 原子性保证机制 | 数据直达 | LPUSH 的元素不一定先进列表再弹出,可直接发给正在 BRPOP 的客户端 |
| 18 | 原子性保证机制 | break 语句 | 保证一次只唤醒一个 Worker,不会重复消费同一个元素 |
| 19 | 连接池详解 | 没有连接池时 | 每次操作新建 TCP,包含建连、命令执行、关闭连接成本 |
| 20 | 连接池详解 | 连接池核心 | 借出-归还模式,不 close,复用已有 TCP 连接 |
| 21 | 连接池详解 | 单线程 vs 多线程 | 单线程通常只用 1 个连接,多线程会按并发数借出多个连接 |
| 22 | 连接池详解 | max_connections | 连接数量上限保护,不是预创建连接数 |
| 23 | 连接池详解 | health_check_interval | 连接健康检查配置,和连接数量没有必然关系 |
| 24 | 连接池详解 | socket_timeout | 单命令读响应超时兜底,使用 BRPOP 时必须大于 BRPOP timeout |
| 25 | 连接池详解 | 三种复用 TCP 的方式 | 纯 socket、单 Connection、连接池都能复用 TCP,只是封装层级不同 |
| 26 | 连接池详解 | 连接池真正附加价值 | 自动重连、线程安全、统一配置应用、并发连接上限保护 |
| 27 | 推拉模型与源码解析 | BRPOP 本质 | 延迟响应(Delayed Response),不是纯推也不是纯拉 |
| 28 | 推拉模型与源码解析 | LPUSH 唤醒 | 服务端主动 addReply 写入等待客户端输出缓冲区 |
| 29 | 推拉模型与源码解析 | 零额外往返 | LPUSH 执行中完成唤醒,不需要客户端再次发送请求 |
| 30 | 推拉模型与源码解析 | TCP 模型 | BRPOP 是请求-响应模型的延迟返回版本,不是服务端随意推送 |
| 31 | 推拉模型与源码解析 | 唤醒触发 | signalKeyAsReady → handleClientsBlockedOnKeys |
| 32 | 推拉模型与源码解析 | 关键源码 | addReplyArrayLen + addReplyBulk 写入 client 缓冲区 |
| 33 | Worker 编排器深度解析 | 任务状态机 | QUEUED → SCRIPT → IMAGE → TTS → VIDEO → PENDING_REVIEW → APPROVED / REJECTED |
| 34 | Worker 编排器深度解析 | BRPOP 消费循环 | 5 秒超时 + Ctrl+C 响应 + 异常不中断循环 |
| 35 | Worker 编排器深度解析 | Seedance 分镜并行 | ThreadPoolExecutor(max_workers=3) 并行调用 Seedance API |
| 36 | Worker 编排器深度解析 | 进度写入 | hset 更新 Redis Hash 字段:task:{id}:progress |
| 37 | Worker 编排器深度解析 | 超时控制 | ARK_VIDEO_MAX_CONCURRENCY 全局信号量限制外部 API 并发 |
| 38 | Worker 编排器深度解析 | 任务超时 | 900 秒任务级超时 + 10 秒轮询间隔 |
参考文献与扩展阅读
| 文档 | 路径 | 主要内容 |
|---|---|---|
| BRPOP 深度解析 | Redis-BRPOP深度解析.md | BRPOP 语法、阻塞机制、多 Worker 行为、注意事项 |
| 单线程与多客户端交互 | Redis单线程与多客户端交互.md | 多进程客户端如何与单线程服务端交互 |
| 原子性保证机制 | Redis原子性保证机制.md | 单线程模型、等待链表源码级分析、命令原子性 |
| 连接池详解 | Redis连接池详解.md | 连接池内部机制、单/多线程对比、超时参数配置建议 |
| 推拉模型与源码解析 | Redis推拉模型与源码解析.md | BRPOP 唤醒机制、延迟响应、源码级流程 |
| Worker 编排器深度解析 | Worker编排器深度解析.md | Worker 启动、消费循环、Seedance 分镜并行、异常处理 |