首页 > java > redis的序列化协议

redis的序列化协议

作者:bin

redis的序列化协议指的是在客户端与服务的交互发送内容协议,定义了请求和响应时内容的格式

例如:发送命令格式 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

您必须 [ 登录 ] 才能发表留言!