首页/数据/数据库速查/DUMP / RESTORE 序列化搬运
Redis 命令96 条

DUMP / RESTORE 序列化搬运

DUMP 导出键的序列化值(含校验与版本字节),RESTORE 反序列化写入目标键;用于跨实例搬键,配合 TTL 参数保留过期。

数据库速查数据更新于 2026-10-13

DUMP / RESTORE 是什么

DUMP 把键导出成一段二进制安全的序列化值(含校验与版本字节),RESTORE 把它写回目标键,可在同一实例或不同实例间搬键。RESTORE 的第二个参数是毫秒级 TTL,0 表示永不过期,因此搬运后能保留原有过期时间。跨版本搬运时要注意序列化格式与 RDB 版本绑定,跨大版本可能校验不通过。

基本信息

适用版本RESTORE 的 REPLACE 选项需 3.0+;序列化格式随版本演进
DUMP返回序列化值,二进制安全,含版本与校验和
RESTORERESTORE key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME n]
TTL 单位毫秒;0 表示不过期
REPLACE目标键已存在时覆盖,否则报 BUSYKEY
替代工具MIGRATE 可直接跨实例搬键,避免传输序列化串

典型使用场景

  • 单键搬迁:把某个键从旧实例复制到新实例
  • 数据修复:用备份里的序列化串恢复被误改的键
  • 灰度验证:把线上键复制到测试实例做问题复现
  • 结构迁移:配合 MIGRATE 在迁移窗口内搬移热点键
  • 精确复制:只搬少量键时不必重启或全量同步

示例

示例
SET src hello
DUMP src               # 输出序列化值(二进制安全,勿经文本工具处理)

# 同一实例内搬运:序列化串原样回填,ttl 用毫秒
RESTORE dst 0 "\x00\x05hello\t\x00..."
RESTORE dst2 3600000 "\x00\x05hello\t\x00..."   # 保留 1 小时过期

# 跨实例搬运:在源实例执行 MIGRATE,可加 COPY 保留源键
MIGRATE 10.0.0.9 6379 user:1 0 5000 REPLACE
MIGRATE 10.0.0.9 6379 user:2 0 5000 COPY

参数与行为

参数作用注意
ttl过期时间,毫秒0 表示永不过期,容易漏填导致键永不过期
REPLACE目标存在时覆盖不加则报 BUSYKEY,脚本会中断
ABSTTLttl 视为绝对时间戳(毫秒)跨机器时钟不一致时慎用
IDLETIME / FREQ设置空闲时间或访问频次用于迁移后保持淘汰策略判断
COPY(MIGRATE)搬迁后保留源键不加则源键被删除
大批量搬运优先用 MIGRATE 或专门的迁移工具:DUMP 的序列化串在脚本、日志、终端间传递时容易被转义或截断,而 MIGRATE 在服务端直接完成传输,不需要把二进制串带出实例。
序列化格式与 RDB 版本绑定:跨大版本搬运可能因校验或内部编码差异失败,正式迁移前先在预发验证;版本差异较大时应改用 RDB 文件迁移或重放业务数据的方式。

易错点

  • RESTORE 忘加 REPLACE:目标键已存在直接报 BUSYKEY,批量脚本中途失败
  • 把序列化串经 shell 变量或日志中转:转义破坏二进制内容,恢复后数据损坏
  • TTL 传 0 却没意识到含义:本以为设置过期,实际变成永不过期
  • 跨大版本直接搬运:序列化校验失败或编码不兼容,需要预先验证
  • 迁移后不校验:只看到命令成功,未核对值、类型与剩余 TTL,问题留到业务侧才暴露

数据来源与参考

  • Redis 官方文档: DUMP
  • Redis 官方文档: RESTORE

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌