在服务器中,对于所有连接的客户端都会保存在一个链表里面
所以redisclient里面的客户端状态其实就有很多属性
(1)fd套接字描述符
根据fd值那么客户端也不同,如果是-1就是伪客户端,否则就是网络连接的客户端
(2)名字
如果不设置位NULL
(3)标识:
比如主从REDIS_MASTER,REDIS_SLAVE
输入缓冲区:不能操作1GB,否则server强制关闭这个客户端
输出缓冲器:有两个,一个是固定的,一个是可变的。固定的是16kb,存储一些短的,常亮,可变的其实是一个链表,可伸缩
argc,argv:命令的参数和个数
身份验证:redis有个属性的进行验证了,如果server开启了服务器验证的配置,那么如果这个属性为0,client发送的任何命令都不会被收到,只有执行AUTH才可以。当变为1的时候,就可以执行了
时间:一个是connnect的时间,还有一个是上一次执行的时间,用来计算空转时长idle
关闭客户端:对于输出缓冲区的长度可变,其实是有一个限制,分为硬限制和软限制
硬限制:如果超过了,立刻关闭
:软限制:超过了不会立刻关闭,server会继续监视,如果在设置的时长内,一直超出软限制,就会关闭这个client连接