Redis网络模型与事件机制

Redis网络模型与事件机制

redis 采用 Reactor 反应器模型实现网络通信。将网络通信包装成文件事件进行处理,客户端进行连接、请求、关闭操作时,服务端会产生相应的事件。为了保证执行的顺序,redis 会将就绪的 socket 加入队列排序,一次发送一个socket 给事件分发器。事件分发器根据 socket 中的事件,调用相应的事件处理器进行处理。
Redis网络模型与事件机制
完成的网络请求流程

  1. redis 服务开启监听套接字监听 AE_READABLE 事件,将该事件与连接应答处理器相关联;
  2. 客户端发送请求到redis,redis监听后创建socket套接字,并将 socket 套接字 的AE_READABLE事件与 命令请求处理器相关联;
  3. 客户端方发送请求到服务器,触发AE_READABLE 事件,事件分配器分发调用命令请处理器进行处理,处理后将 socket 的 AE_WRITABLE 事件与命令回复处理器相关联;
  4. 客户端准备好接受数据后,触发 AE_WRITABLE 事件,服务器调用响应处理器进行处理,返回数据。

文件处理器与时间处理器如何协调工作

  1. 获取距离触发时间最近的时间事件;
  2. 计算还有多久 time 触发;
  3. 阻塞 interval 获取文件事件,如果time <=0,则不进行阻塞;
  4. 处理文件事件;
  5. 处理时间时间(由此可见,时间时间会比设定的时间稍晚一会执行);
    Redis网络模型与事件机制

时间事件有哪些

  1. 更新服务器的各类统计信息;
  2. 关闭无效的客户端;
  3. 尝试进行持久化;
  4. 清理过期的数据;
  5. 从数据库进行定期同步;
  6. 集群模式下进行定期同步和连接测试;