Redis单线程与多线程模型对比
2024年1月1日
redis 单线程还是多线程
结论
- 核心处理逻辑:redis 一直都是单线程,4.0 后对使用多线程处理异步删除的操作。
- 辅助模块:复制模块、某些异步流程、网络 IO 解包 6.0 后用的多线程
为什么选择单线程
官方
[图片下载失败]
- reids 的定位是内存的 k-v 存储,做的就是短平快的热点数据处理
- 一般来说执行会很快,执行本身不应该成为瓶颈,而瓶颈通常在网络 IO,所以处理逻辑使用多线程不会有太多收益
- 同时引入 多线程带来的复杂度远比现象的大
1. 多线程引入的复杂度大
2. 多线程带来额外的成本
- 上下文切换成本
- 同步机制开销,需要加锁来实现,不可忽视的 cpu 开销
- 一个线程本身也占据内存大小,reids 这种内存数据对内存十分珍惜