1 简介

Redis 服务器是典型的一对多服务器程序,一个服务器可以与多个客户端建立网络连接,每个客户端可以向服务器发送命令请求,而服务器则接受并处理客户端发送的命令请求,并向客户端返回命令回复。

2 属性

1)       通用的属性。无论客户端执行什么工作,他们都需要的属性。

2)       与特定功能相关的属性。

属性有如下:

套接字描述符、名字、标志、输入缓冲区、命令与命令参数、命令的实现函数、输出缓冲区、身份验证、时间。

3 客户端的创建与关闭

3.1 创建普通客户端

如果客户端是通过网络连接与服务器进行的连接的普通客户端,那么在客户端使用connect函数连接到服务器时,服务器就会调用这个连接事件处理器,为客户端创建相应的客户端状态,并将这个新的客户端状态添加到服务器状态结构clients链表的末尾。

3.2 普通客户端关闭

关闭的原因有如下几种:

1)       客户端进程退出或者被杀死,那么客户端与服务器之间的网络连接将会被关闭。从而造成客户端被关闭。

2)       客户端向服务器发送了带有不符合协议格式的命令请求,那么这个客户端也会被服务器关闭。

3)       客户端成为CLIENT KILL命令的目标,那么会被关闭

4)       用户为服务器设置了timeout配置选项,当客户端的空转时间超过timeout选项设置的值时,客户端将被关闭。也存在一些特例。

5)       如果客户端发送命令的请求的大小超过了输入缓冲区的大小,那么客户端会被服务器关闭

6)       要发送给客户端的命令回复大小超过了输出缓冲区的限制大小,那么客户端会被服务器关闭