Redis客户端的通信协议RESP

Redis客户端的通信协议

Redis客户端与Redis服务器之间的通信协议是在TCP协议之上构建的,Redis制定了RESP(Redis Serialization Protocol,Redis序列化协议)来实现客户端与服务端的正常交互。

这种协议简单高效,又容易被人类识别。

一、举个例子

例如客户端想要发送一条命令:set name jxl给服务端,那么客户端需要将命令封装成如下格式,每行之间使用\r\n分隔:

*3
$3
set
$4
name
$3
jxl

这样Redis服务端就能够按照RESP将其解析为set name jxl命令,执行后回复的格式如下:

+OK

二、解析发送命令

如上的例子,

*参数数量 CRLF
$参数1的字节数量 CRLF
参数1 CRLF
$参数2的字节数量 CRLF 
参数2 CRLF
……
$参数n的字节数量 CRLF
参数n CRLF

上面的例子是格式化的结果,实际上发送的内容如下:

*3\r\n$3\r\nset\r\n$4\r\nname\r\n$3\r\njxl\r\n

三、解析返回结果

Redis返回结果的类型有以下五种:

  1. 状态回复:在RESP中第一个字节为“+”。
  2. 错误回复:在RESP中第一个字节为“-”。
  3. 整数回复:在RESP中第一个字节为“:”。
  4. 字符串回复:在RESP中第一个字节为“$”。
  5. 多条字符串回复:在RESP中第一个字节为“*”。
    在这里插入图片描述
发布了95 篇原创文章 · 获赞 32 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/jiangxiulilinux/article/details/104850741
今日推荐