常说 Redis 是单线程,主要指核心命令执行长期以单线程为主,不代表整台机器只能用一个核。
最常见的方法:多实例或集群
如果一台服务器有多个核心,最直接的做法是部署多个 Redis 实例,或用 Cluster 把数据分片到多个节点上。这样每个实例各吃一个核,整体吞吐就上来了。
Redis 6 之后还有什么变化
Redis 6 以后可以把网络读写交给多线程辅助处理,但命令执行核心依然偏串行。也就是说,多线程更多是帮忙分担 IO,而不是把所有命令并行执行。
后台任务也不只一个线程
像异步删除、大 Key 释放、持久化相关工作,本来就可能由后台线程或子进程处理,所以“Redis 只有一个线程”这种说法本身就过于简化。
优化前先判断瓶颈
很多场景瓶颈并不在 CPU,而在网络、内存带宽或慢命令。如果单实例还没到明显上限,盲目拆多实例不一定是第一步。
一句话理解
想吃满多核,最稳的办法仍然是分片到多个实例;Redis 的多线程能力更多是在补 IO,而不是彻底改成多核并行执行模型。
正文完




