标签:大体 请求 redis 命令 缓冲区 服务器 执行 客户端
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缓冲区里面;如,有其他从服务器正在复制当前这个服务器,那么服务器会将刚刚执行的命令传播给所有从服务器。
标签:大体,请求,redis,命令,缓冲区,服务器,执行,客户端 来源: https://www.cnblogs.com/sfzlstudy/p/16554985.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。