这一章节其实没有什么好讲的,基本上就是对本章节的一个整体性的概括,没有什么新的东西。这里还是简单的去梳理一下吧。
命令请求的执行过程
首先,客户端将命令以特定的协议格式发往服务端,I/O多路复用程序监听到 socket 状态发生改变时,将其放入任务队列中,服务器的事件分发器根据事件类型触发对应的回调函数(命令处理器)。
命令处理器解析 socket 中的命令,将其放入客户端状态的输入缓冲区中。然后对缓冲区中的内容进行解析,更新argv属性和argc属性。根据 argv[0] 调用对应的命令执行器(也是一个函数),执行客户端的指定命令。
命令执行完毕后,会将结果保存到客户端的输出缓冲区中,当 socket 状态可写入时,就会触发对应的命令回复处理器(也是一个函数),将输出缓冲区中的内容发送给客户端。
(大致流程就是这些,止于其中的细节,我们不需要太关注。这里涉及到大量的复制操作,从一块内存区域到另一块内存区域。网络 I/O 是操作系统完成的,所以如果想了解具体的通讯细节,请前往 计算机网络 章节)
serverCron函数
- 更新服务器时间缓存
- 更新LRU时钟
- 更新服务器每秒执行命令次数
- 更新服务器内存峰值记录
- 处理 SIGTERM 信号
- 管理客户端资源
- 管理数据库资源
- 执行被延迟的 BGREWRITEAOF
- 检查持久化操作的运行状态
- 将AOF缓冲区中的内容写入AOF文件
- 关闭异步客户端
- 增加 cronloops 计数器的值
了解一下就行了,感兴趣的话,看这篇文章:https://blog.csdn.net/Cover_sky/article/details/137196755
(当然,这个博主也写了整个系列的,感兴趣可以去康康)
服务器的初始化
- 初始化服务器的状态结构
- 载入配置选项
- 初始化服务器数据结构
- 还原数据库状态
- 执行事件循环
这个也是了解一下就行,同样给大家找了一篇文章:https://blog.csdn.net/Cover_sky/article/details/137246936
2024.10.29
writeBy kaiven