一、背景与现状 1.1 Redis/Valkey的线程模型 传统Redis以单线程模型著称,直到6.0版本引入IO线程实现网络IO的多线程化。 1.Accept Connections 2.Read Phase Atomic Counter=0 3.Write Phase Atomic Counter=0 Set io_threads_op=READ a.Read Socketb.Parse First Command Set io_threads_op=WRITE Send Responses IO_Threads IO Thread 1 IO Thread 2 ... Main Thread Initialize IO_Threads Event Loop New Clients Add to Pending Reads Processed Clients All ReadsCompleted? Main Thread:Command Processing Prepare Responses Add to Pending Writes Completed Clients All WritesCompleted? 1.2 现有架构的痛点 CPU利用率不足: 主线程仍然负责一部分IO任务,这些任务都可以卸载到IO线程上 主线程在处理命令时,IO线程将处于空限期 在IO线程任务期间,主线程的性能受到最慢IO线程速度的限制 任务卸载不充分: 主线程同步等待IO线程,因此IO线程仅执行读/写操作,并且只解析第一个命令 二、异步化架构设计 2.1 核心改进点