• 技术文章 >数据库 >Redis

    redis事件处理流程分析

    VV2021-02-19 09:18:21转载496

    前言:

    我们知道redis服务器是一个事件驱动程序,它需要处理两类事件,分别是文件事件和时间事件。

    那么redis事件处理流程是什么样的呢?我们一起来看看下面的图:

    2765143aed14ccb89072478baf66e2d.png

    aeMain函数通过调用aeProcessEvents函数来进行文件事件和时间事件的调度和执行。aeEventLoop中记录了事件相关的信息。首先通过aeSearchNearestTimer函数获取最短的时间事件的执行时间间隔n,然后调用aeApiPoll函数获取监听到的套接字,最后执行与套接字向对应的事件处理函数rfileProc和wfileProc,最后再执行时间事件函数processTimeEvents

    文件事件

    Redis的基于Reactor模式开发了自己的网络事件处理器,这个处理器被称为文件事件处理器(file event handler):

    文件事件处理器的构成

    (学习视频分享:redis视频教程

    3c5778baffcb7e261b2b97e1e83a2c4.png

    文件事件的处理器

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

    一次完整的客户端与服务端连接事件

    时间事件

    Redis的时间事件分为定时事件和周期性事件。一个时间事件由三个属性组成:

    id:服务器为时间时间创建的全局唯一IDwhen:记录了时间时间的到达时间(毫秒精度的UNIX时间戳)timeProc:时间事件处理器

    52bc08c63f41c5cc4f9052288037b02.png

    服务器所有的时间事件都放在一个无序链表中,每当时间事件执行器运行时,它就遍历整个链表,查找所有已到达的时间事件,并调用相应的事件处理器。正常模式下的Redis服务器只使用serverCron一个时间事件,而在benchmark模式下,服务器也只使用两个时间事件,所以不影响事件执行的性能。

    相关推荐:redis数据库教程

    以上就是redis事件处理流程分析的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:博客园,如有侵犯,请联系admin@php.cn删除
    专题推荐:redis 事件
    上一篇:redis中的几种常用基础对象介绍 下一篇:总结Redis常用数据类型操作指令

    相关文章推荐

    • 总结Laravel事件系统用法(监听事件,观察者模式)• vue.js无法触发事件怎么办• jquery如何判断是否绑定事件• 事件处理模型分为哪三个对象

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网