집 >데이터 베이스 >MySQL 튜토리얼 >Redis客户端与服务端通信协议
背景 在跟踪REDIS服务端处理命令流程的时候,发现在服务端processInputBuffer里收到的字符串并非是在客户端输入的,而是进行了某种编码。比如,客户端输入get a,实际服务端打印出来的是 buf= *2$3get$1a 最开始认为是在服务端某段代码对客户端送过来的字符
buf= *2 $3 get $1 a最开始认为是在服务端某段代码对客户端送过来的字符串进行处理,可能是出于某些考虑,后来发现从SOCKET读取过来就已经转换过了,所以就应该是客户端和服务端的通信协议,我对这个就开始产生了很浓厚的兴趣,*和$符号必定是有特殊意义的。
客户输入内容 | 处理结果 |
a | *1 $1 a |
ab | *1 $2 ab |
a b | *2 $1 a $1 b |
get a b | *3 $3 get $1 a $1 b |
get a ab | *3 $3 get $1 a $2 ab |