博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(Redis设计与实现-5) 事件
阅读量:6081 次
发布时间:2019-06-20

本文共 585 字,大约阅读时间需要 1 分钟。

redis使用单线程架构和I/O多路复用模型来实现高性能的内存数据库服务。一条命令从客户端到服务端不会立刻被执行,所有命令都会进入一个队列中,然后逐个被执行。

一.文件事件

Redis服务器通过套接字与客户端进行连接,文件事件就是服务器对套接字操作的抽象。文件事件处理器使用I/O多路复用程序来同时监听多个套接字,并根据套接字目前执行的任务来为套接字关联不同的事务处理器。当被监听的套接字准备好执行连接应答、读取、写入、关闭等操作时,与操作相对应的文件事件就会产生,这时文件事件处理器就会调用套接字之前关联好的事件处理器来处理这些事件。

图片描述

文件事件处理器 由四个部分组成:套接字、I/O多路复用程序、文件事件分派器以及事件处理器
I/O多路复用程序总是会将所有产生事件的套接字放到一个队列里面,然后通过这个队列以有序、同步、每次一个套接字的方式向文件事件分派器传送套接字。当上一个套接字产生的事件被处理完毕之后,I/O多路复用程序才会继续向文件事件分派器传送下一个套接字。

二.时间事件

服务器对定时操作的抽象。事件分为:定时事件(指定时间执行一次);周期性事件(每隔一段时间执行一次)。目前Redis只使用周期性事件,而没有使用定时事件。
服务器将所有时间事件都放在一个无序链表中,每当时间事件执行器运行时,遍历整个链表,查找所有已到达的时间事件,并调用相应的事件处理器

转载地址:http://cwegx.baihongyu.com/

你可能感兴趣的文章
第三范式
查看>>
获取MS SQL TABLE列名列表
查看>>
shell常用命令集合
查看>>
【转】【C#】在 Windows 窗体 DataGridView 单元格中承载控件
查看>>
【Based Android】让你的android应用使用可爱的iphone备忘录字体
查看>>
第二部分:开发简要指南-第三章 Hello,本地化
查看>>
好胜决定态度 态度决定成败
查看>>
主机访问虚拟机中linux上的web服务
查看>>
poj 3253:Fence Repair(堆排序应用)
查看>>
Entity Framework系列
查看>>
Android控件GridView之仿支付宝钱包首页带有分割线的GridView九宫格的完美实现
查看>>
如何制作一款HTML5 RPG游戏引擎——第一篇,地图类的实现
查看>>
Android 之使用LocalBroadcastManager解决BroadcastReceiver安全问题
查看>>
破解物联网落地困境-阿里云硬件接入最佳实践
查看>>
POJ 2503 字符串(两种方法)
查看>>
ArcGIS API for Flex 调用天地图、e都市瓦片地图
查看>>
【Yaml】Yaml学习笔记
查看>>
Mockito教程
查看>>
筛选并保留最后一次记录(如筛选最后一次缴纳电费的记录 )
查看>>
亚马逊开源 Neo-AI 框架,可优化 AI 模型提升部署速度
查看>>