Redis是大型架构核心,下面我详解Redis核心技术@mikechen
Redis核心技术
很多人认为 Redis 快,是因为:

Redis 是内存数据库;
Redis 使用单线程;
Redis 数据结构高效;
这些都没错,但还有一个经常被忽略的核心技术:
I/O 多路复用(I/O Multiplexing)
正是它让 Redis 能够在一个线程中高效处理成千上万个客户端连接,大幅减少线程切换和系统调用开销。
可以说:
没有 I/O 多路复用,就没有 Redis 的高并发。
IO多路复用
I/O 多路复用是一种 事件驱动(Event Driven) 的网络 I/O 模型。

它的核心思想是:
一个线程监听多个 Socket,当某个 Socket 就绪时,再去处理它。
假设有 10,000 个客户端连接。
如果采用一个线程处理一个连接:
Client1 ── Thread1
Client2 ── Thread2
Client3 ── Thread3
...
Client10000 ── Thread10000
问题:
- 线程数量巨大
- 内存占用高
- 上下文切换频繁
- CPU 时间大量浪费
线程切换本身就是一项昂贵的操作。
如果采用 I/O 多路复用:
10000 个 Socket
│
▼
epoll
│
▼
一个 Event Loop
│
▼
一个工作线程
优势:
一个线程即可处理大量连接;
无需频繁切换线程;
CPU 利用率更高。
IO多路复用原理
一个请求的大致过程如下:

Client ↓ Socket ↓ epoll_wait() ↓ Redis Event Loop ↓ 读取请求 ↓ 执行 SET/GET ↓ 返回响应
Redis多路复用机制的本质,是用少量线程管理大量连接。
并通过操作系统提供的高效事件通知能力,实现高并发、低延迟的请求处理。