一、RESP 协议简介
RESP 全称 Redis Serialization Protocol,Redis 客户端与服务端之间的通信协议,属于 CS 架构通信规范。
- 版本演进
- Redis1.2:引入 RESP
- Redis2.0:RESP2,成为标准通信协议
- Redis6.0:升级为 RESP3,扩充数据类型,支持客户端缓存新特性
- 基础通信流程(常规命令,不含 Pipeline、PubSub)
- 客户端发送命令
- 服务端解析执行,返回结果
二、RESP2 5 种基础数据类型(靠首字节区分,\r\n即 CRLF 作为结束符)
表格
| 标识 | 类型 | 格式说明 & 示例 |
|---|---|---|
+ |
单行字符串 | 简单字符串,+内容\r\n,例:+OK\r\n |
- |
错误信息 | 和单行字符串格式一致,承载异常信息,例:-Error message\r\n |
: |
数值 | 数字字符串,:[数字]\r\n,例::10\r\n |
$ |
多行字符串(Bulk String) | 二进制安全字符串,最大 512MB• $5\r\nhello\r\n:长度 5,内容 hello• $0\r\n\r\n:空字符串• $-1\r\n:key 不存在(nil) |
* |
数组 | *元素个数\r\n,后面依次拼接各个元素(元素可以是上面任意类型)例 set name 虎哥:*3\r\n$3\r\nset\r\n$4\r\nname\r\n$6\r\n虎哥\r\n |