Redis 协议(RESP)详解:请求与响应解析
目录
- Redis 协议(RESP)详解:请求与响应解析
-
- 概述
- 一、客户端请求协议
-
- 1.1 基本格式
- 1.2 核心规则
- 1.3 请求案例
-
- 案例 1:简单命令(SET)
- 案例 2:带选项的命令(SET EX)
- 案例 3:无参数命令(PING)
- 案例 4:复杂命令(HMSET)
- 二、服务器响应协议
-
- 2.1 响应类型及格式
-
- 2.1.1 简单字符串(Simple String)
- 2.1.2 错误(Error)
- 2.1.3 整数(Integer)
- 2.1.4 批量字符串(Bulk String)
- 2.1.5 数组(Array)
- 2.2 响应案例
-
- 案例 1:简单字符串响应
- 案例 2:错误响应
- 案例 3:整数响应
- 案例 4:批量字符串响应
- 案例 5:数组响应
- 三、完整的请求-响应交互案例
-
- 案例 1:基本的 SET 和 GET 交互
- 案例 2:哈希表操作交互
- 案例 3:错误处理交互
- 四、协议解析要点
Redis 协议(RESP)详解:请求与响应解析
概述
Redis 采用 RESP(Redis Serialization Protocol,Redis 序列化协议)作为客户端与服务器之间的通信协议。RESP 具有以下特点:
- 简单易实现
- 二进制安全
- 高效解析
- 部分人类可读
本文档将按照请求和响应两个维度详细解析 Redis 协议,并提供完整案例。
一、客户端请求协议
客户端向 Redis 服务器发送的所有命令都必须遵循特定的协议格式。
1.1 基本格式
客户端请求必须使用 RESP 数组(Array)类型,格式如下:
*<元素数量>\r\n
$<第一个元素长度>\r\n
<第一个元素内容>\r\n
$<第二个元素长度>\r\n
<第二个元素内容>\r\n
...
1.2 核心规则
- 所有请求都必须是数组类型(首字符为
*
) - 数组中的每个元素都必须是批量字符串(首字符为
$
) - 数组第一个元素是命令名,后续元素是命令参数