ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis(二十,Java知识总结

2021-11-26 12:31:03  阅读:126  来源: 互联网

标签:初始化 Java 二十 Redis server 设置 服务器 数据结构 属性


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

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

  • 设置服务器的运行ID

  • 设置服务器的默认运行频率

  • 设置服务器的默认配置文件路径

  • 设置服务器的运行架构

  • 设置服务器的默认端口号

  • 设置服务器的默认RDB持久化条件和AOF持久化条件

  • 初始化服务器的LRU时钟

  • 创建命令表

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

载入配置选项

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

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

举个栗子

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

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

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

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

  • 如果用户为这些属性的相应选项设置了新的值,那么服务器就使用用户指定的值来更新相应的属性

  • 如果用户没有为这些属性去设置新的值,那么服务器就会验用之前的InitServerConfig函数为属性设置的默认值

初始化服务器数据结构

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

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

  • server.clients链表,这个链表记录了所有与服务器相连的客户端的状态结构,里面的每一个元素都是一个客户端,即redisClient结构

  • server.db数组,存储Redis服务器里面所有数据库的数组

  • server.pubsub_channels字典与server.pubsub_patterns链表,前者用于保存频道订阅信息,后者用于保存模式订阅信息

  • 用于执行Lua脚本的lua环境server.lua

  • 用于保存慢查询日志的server.slowlog属性

当初始化到这一步时,就会去执行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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有