Skip to content

通信协议

Redis 协议(RESP)是 严格的请求-响应队列模型,特点是:

  • 单线程顺序执行命令。
  • 主线程一次只能执行一条命令,不存在两个命令并发执行、返回乱序的情况。
  • 单连接内严格 FIFO,所以没有像dubbo(通过requestId实现单连接并发请求)、thrift、gRPC等框架的异步调用和并发执行。
  • 客户端发的命令进入输入缓冲区。
  • Redis 按顺序解析、执行。
  • 响应结果按顺序写回。
  • 请求和响应是一一对应、严格对齐的,不需要额外的 requestId。

协议格式

RESP 协议格式如下:

  • 命令以 * 开头,后面跟着命令参数的数量。
  • 每个参数以 $ 开头,后面跟着参数的长度。
  • 参数内容以 \r\n 结尾。

普通命令格式

以下是一个简单的示例,展示了如何使用 RESP 协议发送和接收命令:

  • 发送命令:*2\r\n$3\r\nSET\r\n$5\r\nhello\r\n
  • 接收响应:+OK\r\n

pipline格式

以下是一个简单的示例,展示了如何使用 RESP 协议发送和接收命令:

  • 发送命令:*3\r\n$3\r\nSET\r\n$5\r\nhello\r\n$3\r\nGET\r\n$5\r\nhello\r\n
  • 接收响应:+OK\r\n$5\r\nhello\r\n