Redis是大型架构核心,下面我详解Redis百万并发技术@mikechen
纯内存:高并发核心
Redis 把数据放在内存里读写,避免了传统数据库频繁磁盘 I/O 带来的高延迟,这也是它高 QPS 的基础。

所有数据都存储在内存(RAM)中,读写延迟在 纳秒级(ns),远优于磁盘的毫秒级(ms)。
避免了磁盘 I/O 瓶颈,即使是复杂操作(如 Sorted Set 的 ZADD/ZRANGE)也能保持极低延迟。
为什么这么重要:传统数据库(如 MySQL)瓶颈往往在磁盘。
而 Redis 把“最热”的数据全部放在内存,天然适合高并发读写场景。
I/O 多路复用
Redis 使用 epoll/kqueue 这类 I/O 多路复用机制。

基于 Linux 的 epoll 技术,Redis 能够在一个线程中监控成千上万个连接的状态。
它不会在某个连接等待数据时发生阻塞,而是只在连接“活跃”时才去处理对应的事件。
这样它能把连接管理和请求分发做得非常高效,减少系统调用和线程调度成本 。
高效数据结构
Redis 内部为不同场景设计了高效结构,比如 SDS 字符串、跳表、渐进式 rehash 等,尽量把操作复杂度控制在较低水平。

Redis 不是简单的 Key-Value,而是支持 String、Hash、List、Set、Sorted Set、Stream、Bitmap、HyperLogLog、Geo 等丰富结构。
每种结构内部都有多套编码(ziplist、quicklist、skiplist、hashtable 等),根据数据规模自动选择最优编码。
命令大多是 O(1) 或 O(log N) 复杂度(如 HGET、ZADD),避免全表扫描。
线程模型
Redis 的核心命令执行通常由单线程完成,避免了多线程场景里常见的锁竞争、线程切换、上下文切换等开销。

使用 epoll/kqueue/select 等 I/O 多路复用技术,一个线程就能同时监听成千上万个客户端连接。
非阻塞 I/O(Non-blocking I/O),事件驱动模型:有事件就处理,没事件就等待,不会浪费 CPU。
Redis 6.0+ 的进化:引入 多线程 I/O(io-threads 配置),网络读写(解析请求、发送响应)可以交给多个辅助线程,主线程专注执行命令。
这让高连接数、大 payload 场景下吞吐量提升 12 倍。