Redis通信协议详解

一、通信协议

实现一个客户端,第一步要了解client和server之间的通信协议。Redis的client和server之间可以通过两种方式通信:RESP和inline Command。

1.RESP

(1)RESP协议用来规定Redis客户端发送命令的格式和Redis服务端响应消息的格式。

(2)全称:REdis Serialization Protocol. (3)特点:二进制安全,通过在request中加一个长度标识(prefixed lengths)实现的。 (4)request格式:

  • 数组大小 回车换行 [命令参数1字节数 回车换行 命令参数1 回车换行]+

(5)response格式:

  • 状态回复(status reply)的第一个字节是 "+"

  • 错误回复(error reply)的第一个字节是 "-"

  • 整数回复(integer reply)的第一个字节是 ":"

  • 批量回复(bulk reply)的第一个字节是 "$"

  • 多条批量回复(multi bulk reply)的第一个字节是 "*"

例如:request:"*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n",

*3:长度为3的数组

\r\n:回车换行

$3:下一行字符串个数为3

set:长度为3的字符串

  response:+OK

2.inline command

inline command是直接把Redis拼成一个普通字符串发送给Redis服务端,不是二进制安全的。

例如:request:"set key value",

         response:+OK

3.RESP和nline Command的区别

RESP request的key和value可包含"\r\n"等特殊字符,且不会被服务端当做特殊字符处理,而Inline Command不可以。

 

你可能感兴趣的:(Redis)