Redis服务器的启动过程分析
|
本文将通过分析代码来介绍Redis的启动过程,通过查看Redis 的启动脚本,得知Redis的启动时从Redis.c的main方法开始的。Redis启动可以分为以下几个步骤: 1.初始化Redis服务器全局配置 一,初始化Redis服务器全局配置。这一步骤主要是主要是根据Redis.h中设置的Static值来初始化Redis服务器配置,这里设置是Redis服务器的默认配置。如: TCP Port,Redis Client的缺省Timeout; 二,加载配置文件: 这一步是通过读取的配置文件来对Redis服务器进行设置,将会覆盖上一步的某些缺省设置。打开下载下来的Redis源代码,我们可以看到其根目录下有一个默认的配置文件redis.conf。需要注意的是,如果在启动Redis的时候没有指定配置文件,则Redis服务器在启动的时候是不会加载这个默认的配置文件进行配置的。而且这个默认的配置文件和第一步中得全局默认缺省配置不尽相同,比如针对Redis的Append模式的数据保存策略的配置,redis.conf里面的设置是: save 900 1 -------15分钟内一次更新 而上一步里面的默认缺省配置确实: save 60*60 1 -------一个小时内1次更新 因此我们在启动Redis的时候如果默认配置不能满足要求,则需要指明配置文件进行配置。 三,初始化服务器: 初始化服务器是在initServer()方法中完成的,次方法利用上两步设置的参数进一步初始化服务器: 创建用来维护clients和slaves的list 创建Pub/Sub通道 四,加载数据: 根据配置的不同,Redis加载数据的源也不一样,如果在配置文件里设置了appendonly yes(默认是no),那么就从appendfile加载数据,反之则从RedisDb加载数据 从appendfile加载数据:我们先来看一下appendfile的内容是什么。下面的一条记录摘取自appendfile:SET $9 olylakers $3 oly。很显,appendfile保存的就是redis server接收到的各种命令,那么从appendfile加载数据就是redis server从appenfile里面读取这些命令的记录,然后重新把这些命令执行一遍即可。需要注意的是,如果开启了VM,那么在从appendfile加载数据的时候可能要涉及swap操作。 五,开始网络监听: Redis的网络监听没有采用libevent等,而是自己实现了一套简单的机遇event驱动的API,具体见ae.c。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- mysql下普通用户备份数据库时无lock tables权限的解决方法
- sql-server – 在SQL Server中创建可以保存存储过程结果的临
- T-SQL:如何在动态SQL中使用参数?
- T-SQL INSERT INTO与LEFT JOIN
- 数据库 – 查询最后一天,上周,上个月的SQLite
- sql-server – 在星型模式中,事实和维度之间的外键约束是否
- sql中的序列错误.此处不允许使用序列号
- 在SQL SERVER中导致索引查找变成索引扫描的问题分析
- sql-server – 分区By和Group By之间的SQL Server性能比较
- SQL Server:获取下周的相对日期. (下周一,周二,周三……)
