说 Redis 是单线程,只说对了一半。更准确的说法是:Redis 的核心命令执行长期以单线程为主,但整个 Redis 进程并不只有一个线程。
为什么大家总说它是单线程
因为 Redis 早期最核心的网络事件处理和命令执行主要由一个主线程完成。这让实现更简单,避免了大量锁竞争。
单线程为什么还能快
原因不在“线程少”,而在于内存操作快、数据结构高效、命令短小,以及 IO 多路复用减少了线程切换开销。
后来发生了什么变化
从 Redis 4 以后,异步删除等后台任务已经由额外线程处理;Redis 6 之后,网络读写也可以引入多线程辅助,但命令执行核心仍强调串行处理。
结论
面试里如果只回答“Redis 是单线程的”,容易显得过时。更稳妥的回答是区分核心执行线程和整个进程的线程模型。
正文完




