客户端在服务器存在一个结构,叫redisClinet(redis.h/redisClient 客户端状态),保存客户端当前的状态信息,和数据结构;所有连接的客户端组成一个clients链表;
1.客户端通用属性
typedef struct redisClient{
//...
int fd; //套接字描述
robj *name; //名字
int flags; //标志
sds querybuf; //输入缓冲区
robj **argv; //命令与命令参数,数组
int argc; //argv 数组长度
struct redisCommand *cmd; //命令实现函数
char buf[REDIS_REPLY_CHUNK_BYTES]; //固定大小 输出缓冲区,REDIS_REPLY_CHUNK_BYTES 默认值 16*1024,16kb
int bufpos; //buf数组目前已使用的字节数量
list *reply; //可变大小 输出缓冲区 链表
int authenticated; //身份验证,0-1
time_t ctime; //创建客户端时间
time_t lastinteraction; //客户端与服务端最后一次互动时间
time_t obuf_soft_limit_reached_time; //输出缓冲区第一次到达软性限制(soft limit)时间
//...
} redisClient;