what:
redis服务器执行的大体流程:
1、client向服务器发送请求命令;
2、redis服务器从请求中读取命令,并交给“请求处理器”去执行;
大体分为:a、请求保存到输入缓冲区里面;b、解析协议,提取出命令参数,保存到客户端状态argv和argc属性;c、调用命令执行器,执行客户端请求命令;
3、命令执行:
大体分为:查找命令 -> 执行预处理 -> 执行命令实现函数 -> 后续处理
查找命令:就是查找命令(如:set命令)对应的redisCommand结构。对于set命令,set是key,redisCommand结构是value。其中redisCommand里面有很多属性。
执行预处理:为了确保命令可以正确顺利地被执行,做的一些前期检查和准备;
执行命令实现函数:执行操作:client>cmd>proc(client),产生响应回复。回复会被保存到输出缓冲里面,就是buf属性和reply属性。之后函数还会为客户端的套接字关联命令回复处理器。当客户端套接字变成可写状态时,服务器就是执行命令回复处理器。将保存在客户端输出缓冲区的数据发送给客户端。发送完成后,会把输出缓冲区清空。
后续处理:如,服务器开启了AOF持久化功能,那么AOF持久化模块会将刚刚执行的命令请求写入到AOF缓冲区里面;如,有其他从服务器正在复制当前这个服务器,那么服务器会将刚刚执行的命令传播给所有从服务器。