Redis源码剖析和注释(二十)--- 网络连接库剖析(client的创建/释放、命令接收/回复、Redis通信协议分析等)
Redis 网络连接库剖析 Redis网络连接库介绍 Redis网络连接库对应的文件是networking.c。这个文件主要负责 客户端的创建与释放 命令接收与命令回复 Redis通信协议分析 CLIENT 命令的实现 我们接下来就这几块内容分别列出源码,进行剖析。 客户端的创建与释放 redis 网络链接库的源码详细注释 2.1客户端的创建 Redis 服务器是一个同时与多个客户端建立连接的程序。当客户端连接上服务器时,服务器会建立一个server.h/client结构来保存客户端的状态信息。所以在客户端创建时,就会初始化这样一个结构,客户端的创建源码如下: client * createClient ( int fd ) { client * c = zmalloc ( sizeof ( client ) ) ; //分配空间 // 如果fd为-1,表示创建的是一个无网络连接的伪客户端,用于执行lua脚本的时候。 // 如果fd不等于-1,表示创建一个有网络连接的客户端 if ( fd != - 1 ) { // 设置fd为非阻塞模式 anetNonBlock ( NULL , fd ) ; // 禁止使用 Nagle 算法,client向内核递交的每个数据包都会立即发送给server出去,TCP_NODELAY anetEnableTcpNoDelay ( NULL , fd