Redis | 第6章 事件与客户端《Redis设计与实现》

2021-11-29  本文已影响0人  多氯环己烷

前言

参考资料:《Redis设计与实现 第二版》;

第二部分为单机数据库的实现,主要由以下模块组成:数据库持久化事件客户端服务器

本篇将介绍 Redis 中的事件与客户端,其中事件有两种:文件事件时间事件;客户端主要介绍属性,以及创建关闭

与本章相关的 Redis 命令总结在下篇文章,欢迎点击收藏,本篇将不再重复:

《Redis常用命令及示例总结(API)》https://www.jianshu.com/p/f8eb9afaa908


1. 事件

1.1 文件事件

1.1.1 I/O 多路复用程序的实现

底层 IO 多路复用库的选择.png

1.1.2 事件类型与 API

1.1.3 文件事件的处理器

命令请求处理器.png 命令回复处理器.png 客户端与服务器的通信过程.png

1.2 时间事件

时间事件的实现.png

1.2.1 API

1.2.2 serverCron 函数

1.3 事件的调度与执行

1.4 Redis 的单进程单线程误区

2. 客户端

cilents链表.png

2.1 客户端属性

2.1.1 嵌套字描述符

2.1.2 名字

2.1.3 标志

2.1.4 输入缓冲区

一个输入缓冲区示例.png

2.1.5 命令与命令参数

argv 属性与 argc 属性示例.png

2.1.6 命令的实现函数

命令表.png 查找命令并设置 cmd 属性.png

2.1.7 输出缓冲区

可变大小的缓冲区的示例.png

2.1.8 身份验证

2.1.9 时间

typedef struct redisClient{
   //...
   //记录了创建客户端的时间
   time_t ctime;
   //记录客户端与服务器最后一次进行互动(interaction)的时间,即空转时间
   time_t lastinteraction;
   //输出缓冲区第一次到达软性限制(soft limit)的时间
   time_t obuf_soft_limit_reached_time;
} redisClient;

2.2 客户端的创建与关闭

2.2.1 创建普通客户端

clients 链表.png

2.2.2 关闭普通客户端

2.2.3 Lua 脚本的伪客户端

2.2.4 AOF 文件的伪客户端


最后

\color{blue}{\rm\small{新人制作,如有错误,欢迎指出,感激不尽!}}

\color{blue}{\rm\small{欢迎关注我,并与我交流!}}

\color{blue}{\rm\small{如需转载,请标注出处!}}

上一篇 下一篇

猜你喜欢

热点阅读