美文网首页
Redis--事件

Redis--事件

作者: 简书徐小耳 | 来源:发表于2019-04-18 18:07 被阅读0次

    Redis服务器是一个事件驱动程序需要

    文件事件

    • 1.redis服务器通过socket与客户端和其他redis服务器进行连接。
    • 2.文件事件就是指服务器对socket操作的抽象。
    • 3.服务器与客户端或者其他redis服务器的通信会产生相应的文件事件,服务器通过监听并处理这些事件。

    文件事件处理器的构成

    • 1.Socket
    • 2.IO多路复用
    • 3.文件事件分派器
    • 4.事件处理器
    • 5.其中多路复用把socket通过队列传输到文件事件分派器。只有上一个socket处理完毕才会处理下一个

    时间事件类别

    • 1.定时事件,比如serverCron函数
    • 2.周期事件
    • 3.定时操作在事件到达后该事件就被删除
    • 4.周期事件到达后对when属性更新

    事件事件构成

    • 1.id:全局唯一,递增
    • 2.when:毫秒精度的时间戳
    • 3.timeProc:事件处理器函数

    如何实现时间事件

    • 1.采用无序链表(无序是指没有按照when的时间排序)
    • 2.新来的时间事件插入到链表表头,形成倒叙。
    • 3.服务器遍历无序链表找到时间时间去执行。
    • 4.因为默认只有一个serverCorn这个定时任务,我们的定时过期都依靠该定时任务去删除等。

    serverCron的作用

    • 1.更新服务器的相关信息
    • 2.清理过期key
    • 3.关闭和清理失效的客户端
    • 4.尝试AOF和RDB持久化操作
    • 5.定期同步
    • 6.默认每100毫秒执行一次

    事件调度与运行

    • 1.整体流程类似NioEventloop的run方法
    • 2.计算最近的时间事件
    • 3.如果已经有了 在查看是否有文件事件,如果还没到时间则阻塞等待文件事件
    • 4.优先处理文件事件,在处理定时。
    • 5.整个逻辑就是如果既没有时间事件也没有文件事件则阻塞,否则优先处理文件事件

    相关文章

      网友评论

          本文标题:Redis--事件

          本文链接:https://www.haomeiwen.com/subject/narzwqtx.html