Redis6.0版本之前是用单线程模型,6.0版本为什么使用多线程?
- Redis几乎不存在CPU成为性能瓶颈的情况,主要受限于内存和网络IO
内存优化
- 内存淘汰策略
- 增加内存硬件
网络IO优化
Redis 在处理客户端的请求时,包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理。随着硬件性能提升,Redis 的性能瓶颈可能出现网络 IO 的读写,也就是:单个线程处理网络读写的速度跟不上底层网络硬件的速度。Redis 可以使用多线程来并行处理来自多个客户端的网络请求的数据读取,这种设计可以有效减少高并发场景下的网络 I/O 瓶颈,提高整体吞吐量,Redis 多 IO 线程模型只用来处理网络读写请求,对于 Redis 的读写命令,依然是单线程处理。
配置多线程
要启用多线程特性,需配置 Redis 的 io-threads
和 io-threads-do-reads
参数:
io-threads
:设置 I/O 线程的数量。设置为 4 或 8 来匹配你的 CPU 核心数。需要调整以适应具体的工作负载和硬件配置。io-threads-do-reads yes
:启用多线程读操作。