背景 在跟踪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 |
Copyright © 2019- baoaiwan.cn 版权所有 赣ICP备2024042794号-3
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务