redis的序列化协议
作者:binredis的序列化协议指的是在客户端与服务的交互发送内容协议,定义了请求和响应时内容的格式
例如:发送命令格式 RESP的规定一条命令的格式如下,CRLF代表”\r\n”:
*<参数数量> CRLF $<参数1的字节数量> CRLF <参数1> CRLF ... $<参数N的字节数量> CRLF <参数N> CRLF
RESP 响应命令格式
Redis的返回结果类型分为以下五种: 正确回复:在RESP中第一个字节为"+" 错误回复:在RESP中第一个字节为"-" 整数回复:在RESP中第一个字节为":" 字符串回复:在RESP中第一个字节为"$" 多条字符串回复:在RESP中第一个字节为"*" (+) 表示一个正确的状态信息,具体信息是当前行+后面的字符。 (-) 表示一个错误信息,具体信息是当前行-后面的字符。 (*) 表示消息体总共有多少行,不包括当前行,*后面是具体的行数。 ($) 表示下一行数据长度,不包括换行符长度\r\n,$后面则是对应的长度的数据。 (:) 表示返回一个数值,:后面是相应的数字节符。
值得注意的是,我们在redis-cli下看到的是解码过的请求和响应内容,但是我们可以通过telnet连接redis,并且测试:
zengbin>test % telnet redis.xiaoying.work 6379 Trying 10.0.7.76... Connected to redis.xiaoying.work. Escape character is '^]'. //发送 *3 $3 SET $5 hello $5 world //响应 +OK