- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
服务器与客户端.pdf
服务器与客户端
服务器与客户端
初始化服务器
1. 初始化服务器全局状态
2. 载⼊配置⽂件
3. 创建 daemon 进程
4 . 初始化服务器功能模块
5. 载⼊数据
6. 开始事件循环
客 端连接到服务器
命令的请求、处理和结果返回
命令请求实例: SET 的执⾏过程
⼩结
前⾯的章节介绍了所有 Redis 的重要功能组件:数据结构、数据类型、事务、Lua 环
境、事件处理、数据库、持久化,等等,但是我们还没有对 Redis 服务器本⾝做任何
介绍。
不过,服务器本⾝并没有多少需要介绍的新东西,因为服务器除了维持服务器状态之
外,最重要的就是将前⾯介绍过的各个功能模块组合起来,⽽这些功能模块在前⾯的
章节⾥已经介绍过了,所以本章将焦点放在服务器的初始化过程,以及服务器对命令
的处理过程上。
本章⾸先介绍服务器的初始化操作,观察⼀个 Redis 服务器从启动到可以接受客 端
连接,需要经过什么步骤。
然后介绍客 端是如何连接到服务器的,⽽服务器又是如何维持多个客 端的不同状
态的。
⽂章最后将介绍命令从发送到处理的整个过程,并列举了⼀个 SET 命令的执⾏过程作
为例⼦。
初始化服务器
从启动 Redis 服务器,到服务器可以接受外来客 端的⽹络连接这段时间,Redis 需要
执⾏⼀系列初始化操作。
整个初始化过程可以分为以下六个步骤:
1. 初始化服务器全局状态。
2. 载⼊配置⽂件。
3. 创建 daemon 进程。
4 . 初始化服务器功能模块。
5. 载⼊数据。
6. 开始事件循环。
以下各个⼩节将介绍 Redis 服务器初始化的各个步骤。
1. 初始化服务器全局状态
redis.h/redisServer 结构记录了和服务器相关的所有数据,这个结构主要包含
以下信息:
服务器中的所有数据库。
命令表:在执⾏命令时,根据字符来查找相应命令的实现函数。
事件状态。
服务器的⽹络连接信息:套接字地址、端⼜,以及套接字描述符。
所有已连接客 端的信息。
Lua 脚本的运⾏环境及相关选项。
实现订阅与发布 (pub/sub )功能所需的数据结构。
⽇志 (log )和慢查询⽇志 (slowlog )的选项和相关信息。
数据持久化 (AOF 和 R B )的配置和状态。
服务器配置选项:⽐如要创建多少个数据库,是否将服务器进程作为 daemon
进程来运⾏,最⼤连接多少个客 端,压缩结构 (zip structure )的实体数量,
等等。
统计信息:⽐如键有多少次命令、不命中,服务器的运⾏时间,内存占⽤,等
等。
Note
为了简洁起见,上⾯只列出了单机情况下的 Redis 服务器信息,不包含 SENTINEL 、
MONITOR 、 CLUSTER 等功能的信息。
在这⼀步,程序创建⼀个 redisServer 结构的实例变量 server ⽤作服务器的全局
状态,并将 server 的各个属性初始化为默认值。
当 server 变量的初始化完成之后,程序进⼊服务器初始化的下⼀步:读⼊配置⽂
件。
2. 载⼊配置⽂件
在初始化服务器的上⼀步中,程序为 server 变量 (也即是服务器状态)的各个属性
设置了默认值,但这些默认值有时候并不是最合适的:
⽤ 可能想使⽤ AOF 持久化,⽽不是默认的 R B 持久化。
⽤ 可能想⽤其他端⼜来运⾏ Redis ,以避免端⼜冲突。
⽤ 可能不想使⽤默认的 16 个数据库,⽽是分配更多或更少数量的数据库。
⽤ 可能想对默认的内存限制措施和回收策略做调整。
等等。
为了让使⽤者按⾃⼰的要求配置服务器,Redis 允许⽤ 在运⾏服务器时,提供相应
的配置⽂件 (config file )或者显式的选项 (option ),Redis 在初始化完 server 变量
之后,会读⼊配置⽂件和选项,然后根据这些配置来对 server 变量的属性值做相应
的修改:
1. 如果单纯执⾏ redis-serv
文档评论(0)