《Redis深度历险》原理篇——线程IO模型 笔记

Redis作为一个用于高并发的中间缓存件自身确是单线程的(6之后支持多线程,只是将一些网络IO等交给工作线程了,数据上的交互还是会交还给主线程的),这是因为并发性能瓶颈大多不是在CPU上,而是内存以及IO上,这就需要考虑使用异步的方式

多路复用

或者叫事件轮询,简单的说就是给一个死循环,不断的查看是否存在新的事件到来,有些还会提供一个timeout参数,在没有事件到来时,会阻塞一段时间,以节省cpu资源,这个死循环一次就叫一个周期,当采用类似的系统处理多种事件时,就可称这套系统调用称为多路复用API

指令队列与响应队列

Redis给每个客户端套接字都关联一个指令队列,通过队列的顺序来确定服务顺序。
而响应队列则是将结果返还给客户端秒如果当队列为空时,说明连接暂时处于空闲状态,不需要获取写事件,就会将客户端描述符暂时从write_fds中移除,等有数据时再将描述符放入

定时任务

Redis使用一个最小堆,将最先到点的任务排在顶端,在一个事件循环周期中,处理顶端的到点的任务,同时记录下下一个任务到点的时间,设为timeout。

你可能感兴趣的:(Redis,redis)