重点回顾
- 服务器状态结构使用
clients
链表连接起多个客户端状态,
新添加的客户端状态会被放到链表的末尾。
- 客户端状态的
flags
属性使用不同标志来表示客户端的角色,
以及客户端当前所处的状态。
- 输入缓冲区记录了客户端发送的命令请求,
这个缓冲区的大小不能超过 1 GB 。
- 命令的参数和参数个数会被记录在客户端状态的
argv
和 argc
属性里面,
而 cmd
属性则记录了客户端要执行命令的实现函数。
- 客户端有固定大小缓冲区和可变大小缓冲区两种缓冲区可用,
其中固定大小缓冲区的最大大小为 16 KB ,
而可变大小缓冲区的最大大小不能超过服务器设置的硬性限制值。
- 输出缓冲区限制值有两种,
如果输出缓冲区的大小超过了服务器设置的硬性限制,
那么客户端会被立即关闭;
除此之外,
如果客户端在一定时间内,
一直超过服务器设置的软性限制,
那么客户端也会被关闭。
- 当一个客户端通过网络连接连上服务器时,
服务器会为这个客户端创建相应的客户端状态。
网络连接关闭、
发送了不合协议格式的命令请求、
成为 CLIENT_KILL 命令的目标、
空转时间超时、
输出缓冲区的大小超出限制,
以上这些原因都会造成客户端被关闭。
- 处理 Lua 脚本的伪客户端在服务器初始化时创建,
这个客户端会一直存在,
直到服务器关闭。
- 载入 AOF 文件时使用的伪客户端在载入工作开始时动态创建,
载入工作完毕之后关闭。