美文网首页
Redis 事件

Redis 事件

作者: packet | 来源:发表于2018-07-20 19:27 被阅读0次

Redis是事件驱动的服务器。事件是对操作的抽象,redis中的事件分为两类:

1)文件事件:redis通过socket和client相连,socket的操作抽象为文件事件。

2)时间事件:定时操作的抽象,比如serverCron。时间事件有分为定时时间(只执行一次)和周期性时间(每隔一段时间执行一次)。

Redis基于Reactor模式开发了自己的文件事件处理。Redis使用I/O多路复用程序来同时监控多个套接字。当被监听的套接字准备执行读取、写入、关闭等操作时,就会产生相应的文件事件,redis会选择相应的文件处理器来处理时间。


I/O多路复用程序怎样实现?怎样监听套接字的?

该程序包装了select, epoll, evport, kqueue这I/O多路复用函数库来实现。

这个程序把产生时间的套接字放在一个队列里,逐个、有序地把套接字传送给文件事件分派器。

时间事件放在一个无序链表中,每个节点存放时间戳和事件处理函数。redis需要遍历整个链表找出即将执行的时间事件。

目前的redis只有周期性时间事件,redis通过serverCron处理这种时间事件:

1)更新服务器的各类统计消息,比如时间、内存占比等

2)清理数据库中过期键值对

3)关闭和清理连接失效的客户端

4)尝试进行持久化操作(放在子进程中执行)

5)如果是主服务器,那么对从服务器进行定期同步

6)如果是集群模式,对集群进行定期同步和连接测试

参考资料:《Redis设计和实现》

相关文章

  • Redis 事件

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

  • Redis之事件

    本文主要介绍Redis的事件驱动,说明其内部实现机制。 I、上帝视角看Redis的事件驱动 Redis服务器是一个...

  • Redis - 事件

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

  • redis-事件

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

  • 13.事件

    事件 Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件。file event。Redis...

  • Redis源码研究之事件驱动

    本文主要介绍Redis的事件驱动模型。 建议阅读: 1、Redis 事件的理论说明见:wenmingxing R...

  • Redis源码分析之事件循环

    本篇我们来讲Redis的事件循环,Redis的事件循环会根据系统选择evport、epoll、kqueue或sel...

  • Redis事件

    redis服务器是一个事件驱动型的,主要包括以下两种类型的事件:(1)文件事件:客户端与服务器的socket连接,...

  • Redis 事件

    Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件∶文件事件(file event):Redis服务器...

  • Redis事件

    《Redis 设计与实现》[http://redisbook.com/index.html]《Redis 设计与实...

网友评论

      本文标题:Redis 事件

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