Redis RESP 转换工具使用说明

介绍一个将人类可读的 Redis 命令转换为 RESP 原始字符串的 Python 工具。

  • #Redis
  • #RESP
  • #Python
  • #命令行工具
  • #协议分析

一、工具简介

这个工具可以将人类可读的 Redis 命令转换为 RESP(Redis Serialization Protocol)原始字符串,支持:

  • 单条命令转换
  • 交互式 REPL
  • 文件批量处理
  • 可选的 Redis 连接测试

项目地址:

GitHub:redis-to-resp

二、安装与运行环境

  • 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,便于调试协议和构造测试数据。