设为首页 加入收藏

TOP

Redis客户端和服务端初始化教程(二)
2018-03-18 16:21:52 】 浏览:500
Tags:Redis 客户端 服务 初始 教程
ket 的数据发送

2.1.客户端连接到服务器

当 Redis 服务器完成初始化之后,它就准备好可以接受外来客户端的连接了。

当一个客户端通过套接字函数 connect 到服务器时,服务器执行以下步骤:

服务器通过文件事件无阻塞地 accept 客户端连接,并返回一个套接字描述符 fd 。 服务器为 fd 创建一个对应的 redis.h/redisClient 结构实例,并将该实例加入到服务器的已连接客户端的链表中。 服务器在事件处理器为该 fd 关联读文件事件。

完成这三步之后,服务器就可以等待客户端发来命令请求了。

Redis 以多路复用的方式来处理多个客户端,为了让多个客户端之间独立分开、不互相干扰,

服务器为每个已连接客户端维持一个 redisClient 结构,从而单独保存该客户端的状态信息。

redisClient 结构主要包含以下信息:

套接字描述符。 客户端正在使用的数据库指针和数据库号码。 客户端的查询缓存( query buffer)和回复缓存( reply buffer)。 一个指向命令函数的指针,以及字符串形式的命令、命令参数和命令个数,这些属性会在命令执行时使用。 客户端状态:

记录了客户端是否处于 SLAVE MONITOR 或者事务状态。 实现事务功能(比如 MULTI 和 WATCH)所需的数据结构。 实现阻塞功能(比如 BLPOP 和 BRPOPLPUSH)所需的数据结构。 实现订阅与发布功能(比如PUBLISH和SUBSCRIBE)所需的数据结构。 统计数据和选项:客户端创建的时间,客户端和服务器最后交互的时间,缓存的大小,等等。

注意:上面列出的客户端结构信息不包含复制相关属性;

3.小结

服务器经过初始化之后,才能开始接受命令。

服务器初始化可以分为六个步骤:

1. 初始化服务器全局状态。

2. 载入配置文件。

3. 创建 daemon 进程。

4. 初始化服务器功能模块。

5. 载入数据。

6. 开始事件循环。

服务器为每个已连接的客户端维持一个客户端结构,这个结构保存了这个客户端的所有

状态信息。

客户端向服务器发送命令,服务器接受命令然后将命令传给命令执行器,执行器执行给

定命令的实现函数,执行完成之后,将结果保存在缓存,最后回传给客户端。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇MySQL binlog解析之QUERY_EVENT 下一篇IJ连接sql后加载jdbc驱动的方法教..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目