RESTORE key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]

Redis RESTORE 命令反序列化给定的序列化值(由 DUMP 生成),并将它和给定的 key 关联。

如果 ttl0 ,那么不设置过期时间。参数 ttl 以毫秒为单位, 设置 key 的过期时间;

RESTORE 在执行反序列化之前会先对序列化值的 RDB 版本和数据校验和进行检查,如果 RDB 版本不相同或者数据不完整的话,那么 RESTORE 会拒绝进行反序列化,并返回一个错误。

如果键 key 已经存在, 并且给定了 REPLACE 选项, 那么使用反序列化得出的值来代替键 key 原有的值; 相反地, 如果键 key 已经存在, 但是没有给定 REPLACE 选项, 那么命令返回一个错误。

更多信息可以参考 DUMP 命令。

使用ABSTTL 选项时,ttl 需要是Unix timestamp (毫秒) 格式的过期时间(Redis 5.0 或以上版本)。

为了剔除无效连接,可以使用 IDLETIMEFREQ 选项。 查看OBJECT 获取更多信息(Redis 5.0 或以上版本)。

当 key 存在时,RESTORE 会返回 "Target key name is busy" 错误。使用 REPLACE 选项可以替换已存在的 key (Redis 3.0 或以上版本)。

RESTORE 会检查 RDB 版本和数据的 checksum,如果不匹配会返回错误。

*语法

redis RESTORE 命令基本语法如下:

redis 127.0.0.1:6379> RESTORE key ttl serialized-value [REPLACE] [ABSTTL] [IDLETIME seconds] [FREQ frequency]

常用的命令: restore [-cCvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>] restore [-chimvy][-b <区块大小>][-f <备份文件>][-s <文件编号>] restore [-crvy][-b <区块大小>][-f <备份文件>][-s <文件编号>] restore [-cRvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>] restore [chtvy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文件...] restore [-chmvxy][-b <区块大小>][-D <文件系统>][-f <备份文件>][-s <文件编号>][文件...]

参数

  • -b<区块大小> 设置区块大小,单位是Byte。
  • -c 不检查dump操作的备份格式,仅准许读取使用旧格式的备份文件。
  • -C 使用对比模式,将备份的文件与现行的文件相互对比。
  • -D<文件系统> 允许用户指定文件系统的名称。
  • -f<备份文件> 从指定的文件中读取备份数据,进行还原操作。
  • -h 仅解出目录而不包括与该目录相关的所有文件。
  • -i 使用互动模式,在进行还原操作时,restore指令将依序询问用户。
  • -m 解开符合指定的inode编号的文件或目录而非采用文件名称指定。
  • -r 进行还原操作。
  • -R 全面还原文件系统时,检查应从何处开始进行。
  • -s<文件编号> 当备份数据超过一卷磁带时,您可以指定备份文件的编号。
  • -t 指定文件名称,若该文件已存在备份文件中,则列出它们的名称。
  • -v 显示指令执行过程。
  • -x 设置文件名称,且从指定的存储媒体里读入它们,若该文件已存在在备份文件中,则将其还原到文件系统内。
  • -y 不询问任何问题,一律以同意回答并继续执行指令。

*返回值

字符串: 执行成功返回OK。

*例子

redis> DEL mykey
0
redis> RESTORE mykey 0 "\n\x17\x17\x00\x00\x00\x12\x00\x00\x00\x03\x00\
                        x00\xc0\x01\x00\x04\xc0\x02\x00\x04\xc0\x03\x00\
                        xff\x04\x00u#<\xc0;.\xe9\xdd"
OK
redis> TYPE mykey
list
redis> LRANGE mykey 0 -1
1) "1"
2) "2"
3) "3"