2. 初始化服务器默认参数(initServerConfig)
1. Redis服务器初始化流程
redis服务器的初始化流程如下图所示,这里不包含哨兵模式和集群模式的流程,哨兵和集群模式的流程将在后面的博客中介绍。
2. 初始化服务器默认参数(initServerConfig)
第一步是创建一个struct redisServer类型的实例变量server作为服务器的状态,并为结构中的各个属性设置默认值。初始化服务器的状态主要完成的主要工作包括:
(1)设置服务器运行ID(server.runid)为一个根据时间戳生成的一个随机数
(2)设置服务器的serverCron函数的默认运行频率(server.hz)为10次每秒,即100ms调用一次
(3)设置服务器的默认配置文件路径(server.configfile)为空
(4)设置服务器的运行架构,32位或者64位(server.arch_bits),一般为64位
(5)设置服务器的默认端口号(server.port)为6379
(6)设置服务器listen函数的backlog(server.tcp_backlog)为511
(7)设置服务器的默认数据库个数(server.dbnum)为16
(8)设置服务器的日志级别(server.verbosity)为REDIS_NOTICE
(9)设置服务器键的最大空转时长(server.maxidletime)为0
(10)设置服务器TCP的keepalive为0
(11)设置服务器的过期键策略(server.active_expire_enabled)为使能状态
(12)设置客户端最大查询缓冲区大小(server.client_max_querybuf_len)为1GB
(13)设置RDB的保存条件(server.saveparams)为NULL
(14)设置服务器是否使能系统日志(server.syslog_enabled)为0
(15)设置服务器是否作为守护进程运行(server.daemonize)为0
(16)设置AOF持久化策略(server.aof_state)为关闭
(17)设置服务器默认的AOF持久化条件(server.aof_rewrite_perc、server.aof_rewrite_min_size、server.aof_rewrite_base_size)
(18)设置服务器的最大客户端数量(server.maxclients)为1000
(19)设置服务器的最大内存限制(server.maxmemory)为0,即对内存无限制使用
(20)设置服务器的LRU淘汰策略(server.maxmemory_policy)为REDIS_MAXMEMORY_NO_EVICTION
(21)设置服务器的LRU淘汰策略的样本数(server.maxmemory_samples)为5
(22)初始化服务器的LRU时钟(server.lruclock)
(23)设置RDB持久化的保存条件(server.saveparams)
(24)设置和主从复制相关的状态
(25)设置PSYNC命令所使用的backlog
(26)设置客户端输出缓冲区限制(server.client_obuf_limits[])
(27)初始化服务器的命令表字典(server.commands)&#x