Redis IO多路复用

IO复用 redis redis中的io多路复用_redis

redis单线程的理解

单线程的本质其实是图中文件时间处理器是单线程的。

首先要理解redis的操作流程,redis是通发送指令来完成操作的,具体可以分为,发送指令,执行指令以及返回结果大概的按个步骤,但是,当同时多个redis连接的时候呢,多个指令不会同时执行,而是提前进入了一个队列,有点像BIO的执行模式,最后通过队列里面一个个去执行命令,然后在返回结果。

IO多路复用模型(事件驱动)

根据上面的图来讲解IO多路复用的模型
当客户端发送redis执行请求的时候,这里其实是用socket技术来连接的,会产生AE_READDAABLE事件(可以理解成执行IO多路复用的程序)。最重要的是多路复用程序是不断监听socket连接的,不存在阻塞的问题,在后面一步呢,把所有的socket对象存在放队列里面,再执行文件时间处理程序。文件事件处理程序是单线程模型,主要做解析redis指令,通过文件派发器给处理相应指令的程序,最后返回结果。
所以说本质来说redis单线程的本质是文件事件处理程序是单线程的。

多路复用的四种模型

select模型

redis内部的socket会把客户端传来的对象交给系统内核,系统内核不断便利socket实施监听 最后返回结果的时候再从内核返回刀外部socket

epoll模型

跟select相比