RESP(redis通信协议)

Posted by ShiYu on 2018-10-25

RESP (Redis Serialization Protocol)

resp是redis客户端和服务端的通讯协议,容易实现,解析快,作者认为数据库系统瓶颈不在于网络流量,而是在数据库自身内部的逻辑处理上,所以设计出这种易解析,确有大量冗余信息的文本协议。



Redis协议将传输氛围5中最小单元类型:

  1. 单行字符串,以 +符号 开头;
  2. 多行字符串,以$符号开头,后跟字符串长度;
  3. 整数值,以:符号开头,后跟整数的字符串形式;
  4. 错误消息,以-符号开头,后跟数组长度;
  5. 数据,以*符号开头,后跟数据长度。

单行字符串:hello world

1
+hello world\r\n

多行字符串 hello world

1
$11\r\nhello world\r\n

整数 1024

1
:1024\r\n

错误 参数类型错误

1
-WRONGTYPE Operation against a key holding the wrong kind of value\r\n

NULL 用多行字符表示,长度写位-1

1
$-1\r\n

空串用多行字符串表示,长度填0

1
$0\r\n

客户端向服务端发送指令只有一种格式:多行字符串数组,服务端响应结构稍微复杂一点,但是无论多复杂,都是上面5种类型的组合。