强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

Redis 传输协议精讲

Redis 传输协议精讲

理解 RESP 协议,是理解 Redis 一切行为的基石。

为什么学习 RESP 协议?

大多数开发者通过客户端库(Client Library)与 Redis 交互,很少关注底层传输协议。但当你遇到以下场景时,协议知识就成了绕不开的门槛:

场景需要协议知识的原因
开发自定义客户端必须正确编码/解码 RESP 帧
排查网络问题需要读懂抓包中的 Redis 数据
实现代理/中间件需要解析和转发 RESP 流
性能优化Pipeline、批量操作依赖协议特性
协议升级(RESP2 → RESP3)了解新类型才能利用新功能
调试 Lua 脚本脚本的输入输出遵循 RESP 规范

教程结构

本教程共 12 章,由浅入深覆盖 RESP 协议的方方面面:

章节标题核心内容
01RESP 协议概述版本演进、设计哲学、与 Memcached 对比
02RESP2 格式详解五种基础类型的编码规则与解析
03RESP3 新类型双精度、布尔、Map、Set 等扩展类型
04命令格式与发送命令编码、多命令、内联命令
05Pipeline 管道机制批量发送、RTT 优化、实现原理
06发布订阅协议SUBSCRIBE、PSUBSCRIBE、消息格式
07事务协议MULTI/EXEC、WATCH 乐观锁
08Lua 脚本协议EVAL/EVALSHA、脚本缓存、调试
09哨兵协议Sentinel 发现、健康检查、故障转移
10集群协议MOVED/ASK 重定向、槽位迁移
11代理实现Codis、Twemproxy、连接池与路由
12最佳实践驱动开发、连接管理、序列化、安全

阅读建议

  • 初学者:按顺序阅读 01 → 02 → 04 → 05 → 12,掌握基础即可应对日常开发
  • 中间件开发者:重点阅读 02、03、05、10、11,这是代理/路由的核心知识
  • 运维工程师:重点阅读 06、07、09、10,理解集群与高可用的协议细节
  • 客户端作者:全部阅读,尤其关注 02、03、04、05、12

环境准备

# 安装 Redis 7.x(支持 RESP3)
sudo apt install redis-server

# 验证版本
redis-server --version
# Redis server v=7.2.4 ...

# 启动 Redis CLI(raw 模式,便于观察协议)
redis-cli --raw

# 使用 telnet 直接观察协议(推荐学习方式)
telnet 127.0.0.1 6379

约定说明

符号含义
\r\nCRLF,RESP 协议的行终结符
<type>协议类型标识(如 +, -, :, $, *
客户端 → 服务器方向
服务器 → 客户端方向

提示:本教程所有示例均可在本地 Redis 实例上直接运行。建议使用 telnetnc 工具手动发送原始协议数据,以获得最直观的学习体验。