数据库
首页 > 数据库> > Redis(二十,Java知识总结

Redis(二十,Java知识总结

作者:互联网

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

初始化server变量的工作是由redis.c/initServerConfig函数去完成的,完成的主要工作如下所示

initServerConfig主要是设置服务器状态的一些基本信息,并不会去创建数据结构(除了命令表,前面提到的用于找RedisCommand结构的字典)。

载入配置选项

完成了初始化服务器状态结构后,就可以进入初始化第二个状态,开始载入配置选项了。

在启动Redis服务器的时候,是可以通过启动命令后面追加参数来修改选项的

举个栗子

redis-server --port 10086 //使用10086端口

redis-server redis.conf //使用redis.conf的配置文件

所以,在加载了默认配置后,还会去载入配置选项,进行对应属性修改

服务器在用initServerConfig函数初始化完server变量之后,就会开始载入用户给定的配置参数或者配置文件,并根据用户设定的配置,对server变量(初始化的服务器状态)的相关属性的值进行更改

初始化服务器数据结构

服务器在载入用户指定的配置文件后,就代表基本信息已经完成初始化了,现在可以开始初始化服务器状态里面的数据结构了。

前面提到过,initServerConfig对于数据结构,只会去初始化命令表,不过除了命令表之外,服务器状态还包含其他数据结构,比如下面的这些

当初始化到这一步时,就会去执行initServer函数,为以上提到的数据结构分配内存,并且在有需要的时候会关联初始化值。

为什么要放在这里去执行初始化数据结构呢?

**这是因为在配置文件中,是包含对这些数据结构信息的,必须要载入配置选项,才可以正确无误地去初始化数据结构,这其实也是为什么,初始化过程分成

《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享

了两个函数去执行,第一个是initServerConfig去主要负责初始化一般属性,而initServer去主要初始化数据结构**

除了初始化数据结构之外,initServer还需要去执行下面的一些操作

  1. 为服务器设置进程信号处理器(处理进程之间的通信,主要是父子进程)

  2. 创建共享对象(比如经常用到的一些回复字符串对象,还有前面提到过,服务器会一开始初始化1~10000的字符串对象,用于共享字符串,节约空间)

  3. 打开服务器的监听端口,并为监听套接字关联连接应答处理器,等待服务器正式运行时接收客户端的连接(连接过程是先要有一个监听套接字给客户端连接,产生AE_READABLE事件,触发连接应答处理器,然后进行一系列处理)

  4. 为serverCron函数创建时间事件(周期时间事件),等待服务器正式运行时执行serverCron函数

  5. 初始化服务器的后台I/O模块,为持久化的I/O操作做准备

还原数据库状态

现在已经对基本属性,还有数据结构做好了初始化,现在就是还原数据库的状态了,也就是通过RDB或者AOF文件去进行还原。

标签:初始化,Java,二十,Redis,server,设置,服务器,数据结构,属性
来源: https://blog.csdn.net/m0_64383736/article/details/121557281