命令处理流程
1.Redis单线程单进程通过IO复用从文件事件中选出已经就绪的命令放入输入缓存区querybuffer
2.一个个取出querybuffer里的命令进行解析,解析argv和argc
3.通过argv[0]查命令dict,得到对应的函数指针cmd
4.调用cmd函数执行命令,对数据库进行操作
5.执行后续的操作,如果开启了AOF,还要将命令写入AOF缓存区;如果开启了复制,还要将命令发给从服务器
6.继续从文件事件中取出并处理下一个命令请求
如何将命令结果回复给客户端?
1.命令实现函数cmd会将回复保存服务端端的输出缓冲区
2.将客户端的fd关联回复回调函数
3.当客户端fd可写时,服务器会调用回复回调,将保存在输出缓冲区的回复发给客户端