卡飞资源网

专业编程技术资源共享平台

Redis的事件处理器,I/O多路复用你真的懂吗?

Redis基于Reactor模式开发了自己的网络事件处理器叫文件事件处理器(file event handler)

1、文件事件处理器使用i/o多路复用程序来监听多个套接字,根据套接字不同的任务来关联不同的事件处理器;

2、当被监听套接字准备好执行连接应答(accept)、读取(read)、写入(write)、关闭(close)等操作,与操作对应的事件处理器就会产生,这时文件事件处理器就会调用套接字之前关联的事件处理器来执行这些任务;

文件事件处理器组成:

1、套接字;

2、I/O多路复用程序;

3、文件事件派发器;

4、事件处理器;

文件事件处理器流程图如下:

I/O多路复用的实现:

Redis的I/O多路复用都是通过包装常见的select、epoll、evport和kqueue这些多路复用函数来实现的,底层源码都实现了相同的api,底层实现的可以互换的。

文件事件的处理器:

1、连接应答处理器:对连接服务器的的客户端进行应答;

2、命令请求处理器:从套接字中读入客户端发送的命令请求内容;

3、命令回复处理器:将服务器服务器执行命令后得到的命令回复通过套接字返回给客户端;

完整的客户端与服务端的连接示例

时间事件

1、定时事件:让程序在指定时间后执行

2、周期性事件:让程序每隔指定时间执行一次

目前redis只有周期性事件;

时间事件应用实例

1、更新服务器的各类统计信息:时间、内存占用、数据库占用;

2、清理过期键值对;

3、关闭和清理连接失效的客户端;

4、尝试进行AOF或RDB持久化操作;

5、如果是主服务器,那么对从服务器进行定期同步;

6、如果处于集群模式,对集群进行定期同步和连接测试;

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言