char *name;
// 命令执行函数
redisCommandProc *proc;
// 参数个数
int arity;
// 字符串表示flag
char *sflags; /* Flags as string representation, one char per flag. */
// 实际flag
int flags; /* The actual flags, obtained from the ‘sflags’ field. */
…
// 指定哪些参数是key
int firstkey; /* The first argument that’s a key (0 = no keys) */
int lastkey; /* The last argument that’s a key */
int keystep; /* The step between first and last key */
// 统计信息
long long microseconds, calls;
};
客户端的创建和关闭
当客户端向服务器发出connect请求的时候,服务器的事件处理器就会对这个事件进行处理,创建相应的客户端状态,并将这个新的客户端状态添加到服务器状态结构clients链表的末尾
/*
* 创建一个新客户端
*/
redisClient *createClient(int fd){
// 分配空间
redisClient *c = zmalloc(sizeof(redisClient));
// 当 fd 不为 -1 时,创建带网络连接的客户端
// 如果 fd 为 -1 ,那么创建无网络连接的伪客户端