在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文将通过分析代码来介绍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。 |
请发表评论