美文网首页
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--事件

    Redis服务器是一个事件驱动程序需要 文件事件 1.redis服务器通过socket与客户端和其他redis服务...

  • Redis--复制

    Redis--复制 复制功能的实现 1.通过SLAVEOF命令可以让从服务器同步主服务器的数据。 旧版复制实现的机...

  • Redis--哈希

    哈希类型是指键值本身又是一个键值对结构 -----------------------------命令 ---设置...

  • Redis--命令

    设值 获值 设置过期时间(单位:s) 设置过期时间(单位:s) 设置过期时间(单位:ms) 设置UNIX过期时间戳...

  • Redis--集合

    集合(set)类型也是用来保存多个字符串元素的,但是和列表不一样的是,集合中不允许有重复元素,并且集合中元素是无序...

  • Redis--列表

    列表(list)类型是用来存储多个有序的字符串,一个列表最多可以储存2^32 - 1个元素,列表是比较灵活的数据结...

  • redis--使用

    一:redis中的数据类型 redis的数据存储:key=value 键值对 key<键>的数据类型:字符串 va...

  • redis--使用

    一:redis中的数据类型 redis的数据存储:key=value 键值对 key<键>的数据类型:字符串 va...

  • Redis--字典

    字典的应用范围 1.redis的DB就是一个字典 2.redis的hash键,当包含的键值较多,又或者键值对中的元...

  • Redis--链表

    链表 链表作用范围 1.列表键包含的数量较多时候使用。 2.列表中包含的元素都是较长的字符串时候使用 链表节点的组...

网友评论

      本文标题:Redis--事件

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