码迷,mamicode.com
首页 > 其他好文 > 详细

Redis原理

时间:2021-01-18 10:52:32      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:循环   事件   请求   一件事   red   抽象   复杂度   客户端   命令   

 

主程序处于一个阻塞状态的事件循环中等待事件,当有事件发生时,根据事件的属性分发到相应的处理函数进行处理。事件以并发的方式发送到服务处理器,服务处理器将事件整合到一个有序队列中,并分发到具体的请求处理器进行处理
Redis程序的整个运作都是围绕事件循环进行的,事件循环eventloop同时监控多个事件,这里的事件本质上是Redis对于连接套接字的抽象。当套接字变为可读或者可写状态时,就会触发该事件,把就绪的事件放在一个待处理事件的队列中,以有序、同步的方式发送给事件处理器进行处理。这个过程在Redis中被称为Fire。Redis的事件循环会保存两个列表:events和fired列表,前者表示正在监听的事件,后者表示就绪事件,可以被进一步执行。在具体实现时,Redis采用I/O多路复用的方式,封装了操作系统底层sellect/epoll等函数,实现多对套接字的监听,这些套接字就是对应多个不同的客户端的连接。最后由对应的处理器将处理的结果返回客户端。

 

Redis处理所有命令都是顺序执行的,其中包括来自客户端的连接请求。所以当Redis在处理一个复杂度搞、时间很长的请求,其他客户端的连接都会阻塞。Redis内部定时执行的任务也是放在顺序队列中处理,其中也可能包含时间较长的任务,比如自动删除一个过期的key。所以有时候户遇到明明业务不复杂但也会卡顿的问题

 

事件驱动模型的优点如下:   

  1. 有利于结构和模块的开发   

  2. 有利于模块的重用性,事件循环的流程本身和具体的处理逻辑之间是独立的,只要在创建事件的饿时候关联特定的处理逻辑(事件处理器),就可以在完成一件事件的创建和处理

Redis原理

标签:循环   事件   请求   一件事   red   抽象   复杂度   客户端   命令   

原文地址:https://www.cnblogs.com/will-xz/p/14287170.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!