Skip to content

Commit

Permalink
添加对 RESTORE 命令的 REPLACE 选项的说明
Browse files Browse the repository at this point in the history
  • Loading branch information
huangzworks committed Jan 5, 2014
1 parent f9ed3df commit 9943e52
Showing 1 changed file with 26 additions and 2 deletions.
28 changes: 26 additions & 2 deletions key/restore.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,22 @@
RESTORE
============

**RESTORE key ttl serialized-value**
**RESTORE key ttl serialized-value [REPLACE]**

反序列化给定的序列化值,并将它和给定的 ``key`` 关联。

参数 ``ttl`` 以毫秒为单位为 ``key`` 设置生存时间;如果 ``ttl`` 为 ``0`` ,那么不设置生存时间。

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

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

更多信息可以参考 :doc:`dump` 命令。

**可用版本:**
Expand All @@ -26,18 +34,34 @@ RESTORE
::

# 创建一个键,作为 DUMP 命令的输入

redis> SET greeting "hello, dumping world!"
OK

redis> DUMP greeting
"\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"

# 将序列化数据 RESTORE 到另一个键上面

redis> RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
OK

redis> GET greeting-again
"hello, dumping world!"

redis> RESTORE fake-message 0 "hello moto moto blah blah" ; 使用错误的值进行反序列化
# 在没有给定 REPLACE 选项的情况下,再次尝试反序列化到同一个键,失败

redis> RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde"
(error) ERR Target key name is busy.

# 给定 REPLACE 选项,对同一个键进行反序列化成功

redis> RESTORE greeting-again 0 "\x00\x15hello, dumping world!\x06\x00E\xa0Z\x82\xd8r\xc1\xde" REPLACE
OK

# 尝试使用无效的值进行反序列化,出错

redis> RESTORE fake-message 0 "hello moto moto blah blah"
(error) ERR DUMP payload version or checksum are wrong

0 comments on commit 9943e52

Please sign in to comment.