欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Redis客户端的通信协议RESP

程序员文章站 2022-03-10 09:19:24
...

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中第一个字节为“*”。
    Redis客户端的通信协议RESP
相关标签: Redis