Redis6.0 多线程 IO
在 Redis 6.0 中引入了多线程 IO 特性,用来处理网络数据的读写和协议解析,读写数据执行流程如下所示:
在 Redis6.0 中,读数据流程是主线程先将所有可读客户端加入一个队列,全部处理完后,再通过 RR 算法将这些可读客户端分配给 IO 线程,由 IO 线程执行读数据;写数据流程类似处理。
尽管引入多线程 IO 大幅提升了 Redis 性能,但是 Redis6.0 的多线程 IO 仍然存在一些不足:
主线程在处理客户端命令时,IO 线程会均处于空闲状态;由于主线程会阻塞等待所有 IO 线程完成读写数据,主线程在执行 IO 相关任务期间的性能受到最慢 IO 线程速度的限制
由于主线程同步等待 IO 线程,IO 线程仅执行读取解析和写入操作,主线程仍然承担大部分 IO 任务