Redis中的事件

12 篇文章 4 订阅

        Redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件和时间事件。

一、文件事件

        Redis服务器通过套接字与客户端进行连接,文件事件就是服务器对套接字操作的抽象。

        文件事件是由文件事件处理器处理的。文件事件处理器以单线程方式运行,使用I/O多路复用程序监听多个套接字(既实现了高性能的网络通信模型又可以很好地与Redis服务器中其他单线程方式运行的模块进行对接,保持了Redis内部单线程设计的简单性),I/O多路复用程序将产生事件的套接字放到一个队列中,然后通过这个队列以有序、同步、每次一个套接字的方式向文件事件分派器传送套接字。一次完整的客户端与服务器连接事件如图所示:

Redis为文件事件编写了多个文件事件处理器:

(1)连接应答处理器:监听套接字,对连接的客户端进行应答;

(2)命令请求处理器:接收客户端的命令请求;

(3)命令回复处理器:向客户端返回命令执行的结果;

(4)复制处理器:主从服务器进行复制操作;


二、时间事件

        Redis服务器中的一些操作需要在给定的时间执行,时间事件就是对定时操作的抽象。

        Redis服务器将所有的时间事件都放在一个无序链表中(新的事件事件总是插入到链表的表头),每当时间事件执行器运行时,都会遍历整个链表,查找已经到达的时间事件,并调用相应的事件处理器进行处理。Redis中时间事件分两类:

(1)定时事件:让一段程序在指定的时间执行一次。

(2)周期性事件:让一段程序每融指定的时间执行一次。


因此,从事件处理的角度来看,Redis服务器的运行流程可以用以下流程图来概括:


参考文献
1、http://www.redis.net.cn/tutorial/3506.html
2、《Redis设计与实现》第二版---黄健宏
3、https://github.com/xingzhexiaozhu/redis-3.0-annotated
4、http://www.yiibai.com/redis/redis_strings.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值