Redis通讯协议
Redis 通讯协议 (RESP)
Redis 的通信协议全称为 Redis Serialization Protocol(简称 RESP)。该协议是二进制安全(binary-safe)的,具有以下显著特性:实现简单、快速解析以及可读性好。
RESP 是 Redis 客户端与服务端之间进行通信的标准协议。客户端向服务端发送命令请求,服务端则根据命令类型返回相应的数据。需要注意的是,协议中的每一部分均以回车换行符 \r\n 结尾。
命令协议示例
以下是一个 SET 命令的原始协议格式示例。客户端发送三条数据(命令名、键、值),服务端回复操作结果。
*3\r\n // 消息一共有三行(3 个参数)
$3\r\n // 第一行字节数为 3
set\r\n // 第一行的消息内容
$3\r\n // 第二行字节数为 3
abc\r\n // 第二行的消息内容
$6\r\n // 第三行字节数为 6
123456\r\n // 第三行的消息内容
+OK\r\n // 服务端回复:操作成功客户端交互演示
在实际使用中,我们可以通过 redis-cli 或 telnet 工具观察客户端与服务端的交互过程。
1. 使用 redis-cli
daichangyadeMacBook-Pro:~ daichangya$ redis-cli -h localhost -p 6379
localhost:6379> set abc 123456
OK
localhost:6379> get abc
"123456"
localhost:6379> quit2. 使用 telnet 查看原始协议
通过 telnet 可以直接看到底层的协议交互内容(注意输入需符合 RESP 格式):
daichangyadeMacBook-Pro:~ daichangya$ telnet localhost 6379
Trying ::1...
Connected to localhost.
Escape character is '^]'.
*2
$3
get
$3
abc
$6
123456
quit
+OK
Connection closed by foreign host.说明
本文描述的为经典 RESP 协议(通常指 RESP2),该版本在 Redis 6.0 之前是默认协议。Redis 6.0 虽引入了 RESP3,但 RESP2 至今仍被广泛支持且兼容大多数客户端。
版权声明:本文为原创文章,版权归 戴老师的博客 所有,转载请联系博主获得授权。
本文地址:https://1diff.fun/archives/redis-tong-xun-xie-yi.html
如果对本文有什么问题或疑问都可以在评论区留言,我看到后会尽量解答。