Redis初始化服务器

Redis服务器从启动到能够接受客户端的命令请求,需要经过一系列的初始化和设置过程

初始化服务器状态结构

第一步就是创建一个struct redisServer类型的实例变量server作为服务器的状态,并为结构中的各个属性设置默认值

初始化server变量的工作由redis.c的initServerConfig函数完成,initServerConfig函数主要工作是设置服务器的运行ID,默认运行频率,默认配置文件路径,运行架构,默认端口号,默认RDB持久化条件和AOF持久化条件,LRU时钟,创建命令表等。

载入配置选项

initServerConfig函数初始化完server变量后,开始载入用户给定的配置参数和配置文件,并根据用户设定的配置,对server变量相关属性的值进行修改

初始化服务器数据结构

initServerConfig初始化server状态时,程序只创建了命令表的一个数据结构,还有其他数据结构没有创建,比如server.clients链表,server.db数组等,此时就需要对这些数据结构进行初始化了,现在才初始化是因为服务器必须先载入用户指定的配置选项,然后才能正确对数据结构进行初始化,如果初始化后在加载配置选项,服务器需要重新调整和修改已经创建好的数据结构,所以initServerConfig函数主要负责初始化一般属性,initServer函数负责初始化数据结构

还原数据库状态

完成服务器server变量的初始化后,服务器需要载入RDB文件或者AOF文件,并根据文件记录的内容还原服务器的数据库状态

如果服务器启用AOF持久化,就使用AOF文件还原数据库,没有启用就使用RDB文件还原数据库状态

执行事件循环