Skip to content

Redis 技术问答:队列、连接与并发专题总集 ​

整合自 Redis-BRPOP深度解析、Redis单线程与多客户端交互、Redis原子性保证机制、Redis连接池详解、Redis推拉模型与源码解析、Worker编排器深度解析 日期:2026-08-26

合并来源 ​

本文把 redis/ 目录下围绕队列、连接、原子性、推拉模型和 Worker 编排的专题文档,按“基础语法 → 服务端执行模型 → 连接管理 → 原子性 → 源码与编排 → 数据结构与应用”的顺序重新编排到一篇主文档中,便于统一阅读。

术语说明:文档里的 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 同时 BRPOP3 个独立执行流同时阻塞等待队列Redis 等待链表里是 3 个正在阻塞的 TCP 连接

所以后文中如果写“Worker A / Worker B / Worker C”,除非特别说明,重点不是它们到底是线程还是进程,而是它们代表三个独立发起 Redis 命令的执行流。