主题
Redis 技术问答:队列、连接与并发专题总集
整合自 Redis-BRPOP深度解析、Redis单线程与多客户端交互、Redis原子性保证机制、Redis连接池详解、Redis推拉模型与源码解析、Worker编排器深度解析 日期:2026-08-26
合并来源
本文把 redis/ 目录下围绕队列、连接、原子性、推拉模型和 Worker 编排的专题文档,按“基础语法 → 服务端执行模型 → 连接管理 → 原子性 → 源码与编排 → 数据结构与应用”的顺序重新编排到一篇主文档中,便于统一阅读。
- [Redis-BRPOP深度解析.md](file:///Users/binny/workspace-sdd/aiNotes/redis/Redis-BRPOP深度解析.md)
- Redis单线程与多客户端交互.md
- Redis原子性保证机制.md
- Redis连接池详解.md
- Redis推拉模型与源码解析.md
- Worker编排器深度解析.md
术语说明:文档里的 Worker 默认代表独立执行单元
本文中提到的“多个 Worker”,默认隐含的意思是:多个彼此独立的执行单元。这个执行单元可以是多个进程,也可以是同一个进程里的多个线程。
在 Redis 看来,它并不直接关心 Worker 是线程还是进程。Redis 服务端真正看到的是客户端发起的 TCP 连接,也就是 Redis 内部的 client 结构体。因此:
| 文档说法 | 应用侧含义 | Redis 服务端看到的对象 |
|---|---|---|
| 3 个 Worker 进程 | 3 个独立 Python 进程,各自有自己的 redis_client 和连接池 | 通常至少 3 条 TCP 连接,CLIENT LIST 至少 3 行 |
| 1 个进程里的 3 个 Worker 线程 | 3 个线程共享同一个 redis_client,但并发命令会从连接池借出不同连接 | 并发时可能看到 3 条 TCP 连接,等待链表也可能有 3 个节点 |
| 3 个 Worker 同时 BRPOP | 3 个独立执行流同时阻塞等待队列 | Redis 等待链表里是 3 个正在阻塞的 TCP 连接 |
所以后文中如果写“Worker A / Worker B / Worker C”,除非特别说明,重点不是它们到底是线程还是进程,而是它们代表三个独立发起 Redis 命令的执行流。