Redis RESP 转换工具使用说明
介绍一个将人类可读的 Redis 命令转换为 RESP 原始字符串的 Python 工具。
一、工具简介
这个工具可以将人类可读的 Redis 命令转换为 RESP(Redis Serialization Protocol)原始字符串,支持:
- 单条命令转换
- 交互式 REPL
- 文件批量处理
- 可选的 Redis 连接测试
项目地址:
二、安装与运行环境
- Python 3.6+
- 仅使用标准库,无需额外安装依赖
- 将脚本保存为
redis-to-resp.py后直接运行
python redis-to-resp.py [选项] [命令]
三、使用方式
1. 转换单条命令
python redis-to-resp.py "PING"
2. 进入交互式模式
python redis-to-resp.py -i
也可以使用完整参数:
python redis-to-resp.py --interactive
进入后提示符为 redis>,可以反复输入命令查看转换结果。输入空行无效,使用 Ctrl+C 或 Ctrl+D 退出。
3. 从文件批量转换
命令文件每行一条命令,也支持使用 # 添加注释:
# commands.txt
PING
SET foo bar
GET foo
HSET user:1 name "张三" age 28
执行:
python redis-to-resp.py -f commands.txt
或者:
python redis-to-resp.py --file commands.txt
4. 直接发送到 Redis
交互模式连接本地 Redis:
python redis-to-resp.py -i --send 127.0.0.1:6379
批量发送命令:
python redis-to-resp.py -f commands.txt --send localhost:6379
发送成功后会打印 Redis 的原始回复。
--send是直接连接 Redis,不等同于 Gopher。请只连接本地或明确授权的测试环境,并在发送前确认目标地址和端口。
四、快速参考
# 最简用法
python redis-to-resp.py PING
# 带空格的值
python redis-to-resp.py 'SET greeting "Hello World"'
# 交互并发送到本地 Redis
python redis-to-resp.py -i -s 127.0.0.1:6379
# 批量转换文件
python redis-to-resp.py -f cmds.txt
五、与 Gopher + SSRF 笔记的关系
RESP 工具负责把 Redis 命令转换成原始协议数据;Gopher 脚本再负责对这些数据进行 URL 编码并拼接 Gopher URL。
Redis 命令
↓
RESP 转换工具
↓
原始 RESP 数据
↓
Gopher 脚本进行 URL 编码
↓
Gopher URL
因此,RESP 工具可以作为 Gopher + Redis 学习笔记的辅助工具,但两个工具不需要合并成一个脚本。
工具作用
- Python:运行工具和处理命令行参数。
- RESP:表示 Redis 客户端与服务端之间的请求格式。
redis-to-resp.py:将可读的 Redis 命令转换为 RESP,便于调试协议和构造测试数据。