Redis 6.0 多线程的实现机制?

流程简述如下:

  • 主线程负责接收建立连接请求,获取 Socket 放入全局等待读处理队列。
  • 主线程处理完读事件之后,通过 RR(Round Robin)将这些连接分配给这些 IO 线程。
  • 主线程阻塞等待 IO 线程读取 Socket 完毕。
  • 主线程通过单线程的方式执行请求命令,请求数据读取并解析完成,但并不执行。
  • 主线程阻塞等待 IO 线程将数据回写 Socket 完毕。

image-20210901210139632

该设计有如下特点

  • IO 线程要么同时在读 Socket,要么同时在写,不会同时读或写。
  • IO 线程只负责读写 Socket 解析命令,不负责命令处理。

发表评论

后才能评论

评论(2)

  • Destinyづ 香 普通 2021-09-10 10:53 上午

    主线程通过单线程的方式执行请求命令,请求数据读取并解析完成,但并不执行。这句话怎么理解的?前面执行,后面又说但并不执行