Skip to content

Latest commit

 

History

History
15 lines (12 loc) · 751 Bytes

howToHandleConcurrent.md

File metadata and controls

15 lines (12 loc) · 751 Bytes

为什么单线程的Redis能处理那么多的并发客户端连接?


  • 纯内存操作
  • 核心是非阻塞的IO多路复用机制
  • 单线程反而避免了多线程的繁琐上下文切换问题

Redis的线程模型

  • Redis基于reactor模式开发了网络事件处理器,这个处理器叫做文件事件处理器,file event handler。这个文件事件处理器是单线程的,redis才叫做单线程的模型,采用IO多路复用机制同时监听多个socket,根据socket上的事件来选择对应的事件处理器来处理这个事件。
  • IO多路复用程序
    • 不负责处理socket产生的事件
    • 负责轮训所有socket产生的请求
    • 压进队列(与阻塞式IO多路复用的区别)