Redis 的 RESTORE
命令用于将序列化后的数据(通常由 DUMP
命令生成)恢复为 Redis 的键值。它在数据迁移、备份恢复和跨实例同步等场景中非常有用。以下是详细说明:
作用
- 数据恢复
将DUMP
命令生成的序列化数据重新加载到 Redis 中,恢复为原始键值。 - 跨实例迁移
允许在不同 Redis 实例或集群之间传输数据。 - 持久化恢复
结合持久化文件(如 RDB),用于故障恢复或版本回滚。
语法
RESTORE key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]
- 参数说明:
key
:恢复后的键名。ttl
:键的生存时间(单位:毫秒)。设为0
表示永不过期。serialized-value
:由DUMP
生成的序列化数据(二进制字符串)。REPLACE
(可选):覆盖同名键(默认不允许覆盖)。ABSTTL
(可选):将ttl
解释为绝对 Unix 时间戳(毫秒)。IDLETIME
和FREQ
(可选):用于 LRU/LFU 算法的高级配置。
用法示例
-
基本恢复
从序列化数据恢复键mykey
,设置 TTL 为 10 秒:RESTORE mykey 10000 \"\\x00\\x03foo\\x06\\x00\\x8f\\xd6\\xe4\\x5d\\x3c\\xfc\\xbb\"
-
覆盖现有键
使用REPLACE
强制覆盖已存在的mykey
:RESTORE mykey 0 \"...\" REPLACE
-
设置绝对过期时间
使用ABSTTL
指定键在 2025 年 1 月 1 日过期(Unix 时间戳):RESTORE mykey 1735689600000 \"...\" ABSTTL
为什么需要 RESTORE 命令?
- 数据迁移
在分布式系统中,需将数据从一个 Redis 实例迁移到另一个实例。通过DUMP
+RESTORE
实现无损传输。 - 备份与恢复
结合脚本定期备份关键数据,故障时快速恢复。 - 跨环境同步
将生产环境的数据复制到测试环境,方便调试。 - 兼容性处理
序列化格式是 Redis 内部协议,确保不同版本/配置间的兼容性(需注意版本差异)。
注意事项
- 数据完整性
序列化数据必须由DUMP
生成,且传输中不可损坏。 - 覆盖限制
默认不允许覆盖已有键,需显式指定REPLACE
。 - 版本兼容性
不同 Redis 版本的序列化格式可能不兼容,建议同版本间操作。 - 性能影响
大数据的DUMP
/RESTORE
可能阻塞服务,建议在低峰期操作。
通过结合 DUMP
和 RESTORE
,Redis 提供了灵活的数据管理能力,适用于多种运维场景。