Redis RESTORE 命令反序列化给定的序列化值(由 DUMP 生成),并将它和给定的 key
关联。
如果 ttl
为 0
,那么不设置过期时间。参数 ttl
以毫秒为单位, 设置 key
的过期时间;
RESTORE 在执行反序列化之前会先对序列化值的 RDB 版本和数据校验和进行检查,如果 RDB 版本不相同或者数据不完整的话,那么 RESTORE 会拒绝进行反序列化,并返回一个错误。
如果键 key
已经存在, 并且给定了 REPLACE
选项, 那么使用反序列化得出的值来代替键 key
原有的值; 相反地, 如果键 key
已经存在, 但是没有给定 REPLACE
选项, 那么命令返回一个错误。
更多信息可以参考 DUMP 命令。
使用ABSTTL
选项时,ttl
需要是Unix timestamp (毫秒) 格式的过期时间(Redis 5.0 或以上版本)。
为了剔除无效连接,可以使用 IDLETIME
或FREQ
选项。 查看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"