Redis server启动后会做哪些操作

82 阅读1分钟

启动在server.c文件中的main函数。

对于 Redis 的 main 函数来说,它的执行工作分成了五个阶段。

阶段一:基本初始化。在这个阶段,main 函数主要是完成一些基本的初始化工作,包括设置 server 运行的时区、设置哈希函数的随机种子等。

阶段二:检查哨兵模式,并检查是否要执行 RDB 检测或 AOF 检测

阶段三:运行参数解析。

阶段四:初始化 server。而在调用完 initServer 后,main 函数还会再次判断当前 server 是否为哨兵模式。如果是哨兵模式,main 函数会调用 sentinelIsRunning 函数,设置启动哨兵模式。

阶段五:执行事件驱动框架。

image.png

Redis 运行所需的各种参数,都统一定义在了server.h文件的 redisServer 结构体中。

image.png

Redis 对运行参数的设置实际上会经过三轮赋值,分别是默认配置值、命令行启动参数,以及配置文件配置值。

在完成参数配置后,main 函数会开始调用 initServer 函数,对 server 进行初始化。

主要可以分成三个步骤。

第一步,Redis server 运行时需要对多种资源进行管理。

第二步,在完成资源管理信息的初始化后,initServer 函数会对 Redis 数据库进行初始化。

第三步,initServer 函数会为运行的 Redis server 创建事件驱动框架,并开始启动端口监听,用于接收外部请求。


此文章为10月Day8学习笔记,内容来源于极客时间《Redis 源码剖析与实战》