1 / 29
文档名称:

redis-server启动介绍.ppt

格式:ppt   大小:473KB   页数:29页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

redis-server启动介绍.ppt

上传人:541807096 2021/5/19 文件大小:473 KB

下载得到文件列表

redis-server启动介绍.ppt

文档介绍

文档介绍:*
Redis Server 启动介绍
2011年7月18日
1
主要内容
Redis Server 启动
处理命令和返回应答的方式
参考资料
2
1 . Redis Server 启动
开始进行全局服务端状态初始化
设立命令表
导入配置文件
initServer()
back to main()
3
Redis Server 启动
4
开始进行全局服务端状态初始化
()函数。首先执行,initServerConfig()。这个函数将结构体变量server的部分变量进行初始化,server的类型是struct redisServer,这个作为全局的服务端状态。
5
开始进行全局服务端状态初始化
在struct redisServer这个结构体中有大量的成员变量,但是他们一般在下面这些类别里面:
initServerConfig(),有的时候,配置文件并没有配置说明某个变量的值,这个时候initServerConfig()会给出默认参数。
6
设立命令表
下一件main()函数做的事情是,将redis的命令分类,这些命令是通过一个全局的变量readonlyCommandTable 这个变量是通过struct redisCommand.
7
设立命令表
这个只读的命令表是通过分类排序的,例如string 命令,list命令,set命令,等等,这些都是为了使这个可以给程序员更容易的浏览类似的命令。这个已经排好序的表的命令由变量名commandTable来声明的,并且使用标准的二分查找来查找命令,用命令lookupCommand(), 这个将会返回一个redisCommand的指针。(初始化变量在initServerConfig())中进行的,因为命令表被作者认为是初始化配置的一部分。) 一个redisCommand 结构体记录了命令的名字-有助于记忆的,如get 是一个指向执行实际命令的C 语言函数指针,同时这个命令的参数,例如命令的标志是否返回一个大块的响应和一个VM的特殊成员。
8
导入配置文件
Main() 函数开始处理由用户输入的命令行参数,这样开始启动redis-server的执行。现在,有一个仅仅只有一个参数的情况下,redis server通常version –v 并且help –h,或者路径中说明配置文件的路径。如果,路径已经给出来,redis加载配置文件并且override 那些在initServerConfig中设置的默认参数,通过调用loadServerConfig()。这个函数是相当的简单的,循环读取配置文件中的每一行,并且将那些可以匹配到在server结构体中成员变量的变量名值转化出来。在这点上,redis将会使这个成为守护进程并且将这个从终端分离如果用户已经设置了这样做的话。
9
initServer()
initServer() 完成初始化server 结构体的工作,这个最开始是从initServerConfig()开始的。首先,它建立起信号处理,(SIGHUP 和SIGPIPE被忽略的,当接受到SIGHUP信号的时候,可以重新加载配置文件,就像其他的守护进程一样。包括打印堆栈信息,如果server收到一个SIGSEGV。
更多详情可以看 segvHandler(). 很多的双向链表(参见 )在这里被建立起来用来跟踪客户端和从服务器和监视器(客户端可以发送MONITOR 命令) 还有一个object 的空链表。
10