Redis事件和整体框架

Redis服务器是事件驱动程序,主要处理两类:
文件事件
时间事件

文件事件

基于Reactor模式使用IO多路复用来监听多个套接字,并且根据套接字的事件分配相应的事件处理器。
IO多路事件都会放在一个队列中,并发时,有序执行。

时间事件

服务器将所有时间事件都放在一个无序链表。
当时间事件执行器运行时,会遍历整个链表,查找已经到达的时间事件,并且调用相应的事件处理器。

常见时间事件
  • 更新服务器状态
  • 关闭过期连接
  • AOF或者RDB
  • 集群同步
  • 测试从服务器连接
时间事件可能会晚一些执行

main(){
while{
文件事件
时间事件
}
}
创建时间事件会将其加入到链表中,但是只有当本次循环的文件事件执行完才会执行时间事件。
时间事件中有一个最重要的循环任务:serverCron默认每100ms运行一次,用来执行:

  • 更新服务器时钟
  • 更新服务器状态(LRU,执行命令次数等)
  • 管理和客户端的连接
  • AOF和RDB持久化

Redis是用客户端-服务器cs框架的

当服务器和客户端之间的socket因为客户端的写入而变得可读时,服务器将调用命令处理器来执行以下操作:
读取套接字,并且取出其中命令,放入缓冲区,调用相应的命令。

相关推荐

  1. Redis事件整体框架

    2024-07-11 20:22:07       21 阅读
  2. 框架封装 · Redis 事件监听》

    2024-07-11 20:22:07       24 阅读
  3. Redis的实现四:事件循环计时器

    2024-07-11 20:22:07       49 阅读
  4. Pytorch整体框架学习

    2024-07-11 20:22:07       66 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 20:22:07       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 20:22:07       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 20:22:07       57 阅读
  4. Python语言-面向对象

    2024-07-11 20:22:07       68 阅读

热门阅读

  1. House holder reflections and Givens rotations

    2024-07-11 20:22:07       19 阅读
  2. Python开发 ——循环中的 `continue` 语句

    2024-07-11 20:22:07       20 阅读
  3. Spring的bean的生命周期——bean的创建与销毁

    2024-07-11 20:22:07       21 阅读
  4. Nginx Bla~Bla~

    2024-07-11 20:22:07       18 阅读
  5. A133 Android10 root修改

    2024-07-11 20:22:07       20 阅读
  6. 雅思词汇及发音积累 2024.7.11

    2024-07-11 20:22:07       18 阅读