redis客户端连接到服务器

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

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

1.   服务器通过文件事件无阻塞地accept客户端连接,并返回一个套接字描述符 fd 。

2.   服务器fd创建一个对应的redis.h/redisClient结构实例,并将该实例加入到服务器的已连接客户端的链表中。

3.   服务器在事件处理器为该fd关联读文件事件。

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

Redis 以多路复用的方式来处理多个客户端, 为了让多个客户端之间独立分开、不互相干扰,服务器为每个已连接客户端维持一个redisClient 结构, 从而单独保存该客户端的状态信息。

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

ü  套接字描述符。

ü  客户端正在使用的数据库指针和数据库号码。

ü  客户端的查询缓冲(query buffer)和回复缓存(reply buffer)。

ü  一个指向命令函数的指针,以及字符串形式的命令、命令参数和命令个数,这些属性会在命令执行时使用。

ü  客户端状态:记录了客户端是否处于SLAVE、MONITOR 或者事务状态。

ü  实现事务功能(比如MULTIWATCH)所需的数据结构。

ü  实现阻塞功能(比如BLPOPBRPOPLPUSH)所需的数据结构。

ü  实现订阅与发布功能(比如PUBLISHSUBSCRIBE)所需的数据结构。

ü  统计数据和选项:客户端创建的时间,客户端和服务器最后交互的时间,缓存的大小,等等。

为了简洁起见,上面列出的客户端结构信息不包含复制(replication)的相关属性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值