Java资源分享网 - 专业的Java学习网站 学Java,上Java资源分享网
Redis 源码日志 PDF 下载
发布于:2024-08-12 11:28:29
(假如点击没反应,多刷新两次就OK!)

Redis 源码日志 PDF 下载 图1

 

 

资料内容:

 

概述
在讲述 Redis 如何提供服务之前,有必要介绍 Redis 的事件驱动
模型。
我们知道,进程能够进⾏⽹络的读写操作,但有些时候这些读写操
作是不可⾏的,譬如因为内核的⽹络发送缓冲区满了导致不可写;
⽹络收取缓存中⽆数据可读,导致不可读。那如果有⼀种机制,可
以在⼀个事件(可读或者可写)发⽣的时候,才告知到进程,这样
就避免了进程在⼀个事件出现等待阻塞的情况,提⾼了进程的吞吐
能⼒。 Redis 内部有⼀个⼩型的事件驱动,它和 Libevent ⽹络库
的事件驱动⼀样,都是依托操作系统的 I/O 多路复⽤技术⽀撑起来
的,这种 IO 驱动模型有个经典的名字:Reactor 模型,反应炉。
利⽤ I/O 多路复⽤技术,监听感兴趣的 I/O 事件,例如读事件,写
事件等,同时也要维护⼀个以⽂件描述符为主键,数据为某个预设
函数的事件表,这⾥其实就是⼀个数组或者链表。当事件触发时,
⽐如某个⽂件描述符可读,系统会返回⽂件描述符值,⽤这个值在
事件表中找到相应的数据项(包括回调函数等),从⽽实现回调。
同样的,定时事件也是可以实现的,因为系统提供的 I/O 多路复⽤
技术中的函数允许我们设置等待超时的时间,预设定时间内没有事
件发⽣时,会返回。上⾯⼀段话⽐较综合,可能需要⼀些 Linux 系统编程
和⽹络编程的 基础,但你会看到多数 Reactor 事件驱动程序都是这么实现的。
事件驱动数据结构
Redis 事件驱动内部有四个主要的数据结构,分别是:事件循环结
构体,⽂件事件结构体,时间事件结构体和触发事件结构体。