美文网首页
Redis文件事件和时间事件

Redis文件事件和时间事件

作者: 涵仔睡觉 | 来源:发表于2018-05-03 17:03 被阅读0次

Redis服务器需要处理两类事件:文件事件和时间事件。

1、文件事件

Redis服务器通过套接字与客户端进行连接,而文件事件就是服务器对套接字操作的抽象。
Redis基于Reactor模式开发了网络事件处理器,由四部分组成:套接字、I/O多路复用程序、文件事件分派器以及事件处理器。

image
  • 套接字:当有一个套接字准备好执行连接应答、写入、读取、关闭等操作时,就会产生一个文件事件(多个套接字就会有多个文件事件产生);
  • I/O多路复用程序:负责监听多个套接字,并向文件事件分派器传送产生事件的套接字。I/O多路复用的功能是evport、epoll、kqueue和select的包装。事件类型有AE_READABLE和AE_WRITABLE,如果一个事件即可读又可写,则先处理AE_READABLE事件,再处理AE_WRITABLE事件。I/O多路复用程序会将产生的所有事件的套接字放在一个队列中,以有序同步、每次一个套接字的方式向文件事件分派器传送套接字,只有一个套接字的事件处理完成后才会再发下一个:


    image
  • 文件事件分派器:根据套接字产生事件的类型,调用相应的事件处理器;
  • 事件处理器:事件处理函数。
    (1)连接应答处理器:封装了accept
    (2)命令请求处理器:封装了read
    (3)命令回复处理器:封装了write

2、时间事件

分类:

  • 定时事件:让一段程序在指定时间后执行一次
  • 周期性事件:让一段程序每隔指定时间就执行一次

属性:

  • id:服务器为时间事件创建的全局唯一ID,顺序递增
  • when:时间事件到达时间,毫秒级UNIX时间戳
  • timeProc:时间事件处理器,一个函数

实现:服务器将时间事件都放在一个无序链表中(不是按时间顺序排序,而是按照ID排序,新产生的时间事件放在链表的表头),每次时间事件执行器运行时,它就遍历整个链表,查找所有已经到达的时间事件,并调用相应的事件处理器。

相关文章

  • Redis文件事件和时间事件

    Redis服务器需要处理两类事件:文件事件和时间事件。 1、文件事件 Redis服务器通过套接字与客户端进行连接,...

  • 单机数据库的实现(下)

    事件 redis服务器是一个事件驱动程序,主要处理两类事件:文件事件和时间事件。 文件事件 文件事件处理器使用I/...

  • Redis - 事件

    Redis - 事件 Redis服务器是一个事件驱动程序,服务器处理的事件分为时间事件和文件事件两类。 文件事件处...

  • redis-事件

    redis的主要事件源包括信号,网络,文件和时间事件,文件事件没看到用于做什么。 1、信号事件 redis忽略了S...

  • redis(11)事件

    1、redis服务器是一个事件驱动程序,包含两类事件:文件事件、时间事件 2、文件事件:服务器通过套接字与客户端进...

  • Redis的事件机制

    Redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件(file event)和时间事件(time ...

  • [redis 源码走读] 事件 - 文件事件

    redis 服务底层采用了异步事件管理(aeEventLoop):管理时间事件和文件事件。对于大量网络文件描述符(...

  • Redis 事件

    Redis是事件驱动的服务器。事件是对操作的抽象,redis中的事件分为两类: 1)文件事件:redis通过soc...

  • Redis--事件

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

  • Redis线程模型

    redis 内部使用文件事件处理器 file event handler,这个文件事件处理器是单线程的,所以 re...

网友评论

      本文标题:Redis文件事件和时间事件

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