Redis RESTORE命令

Redis RESTORE命令教程

Redis RESTORE 命令用于反序列化 Redis 中给定的序列化值,并将它和给定的 KEY 关联。参数 TTL 以毫秒为单位为 KEY 设置生存时间;如果 TTL 为 0 ,那么不设置生存时间。

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

Redis RESTORE命令详解

语法

192.168.98.70:6379> RESTORE KEY TTL serialized-value

参数

参数 描述
KEY 需要反序列化的键名。
TTL KEY 的生成时间,如果为 0,则永不过期。
serialized-value 需要反序列化的数据。

返回值

如果反序列化成功那么返回 OK ,否则返回一个错误。

时间复杂度

查找给定键的复杂度为 O(1) ,对键进行反序列化的复杂度为 O(N*M) ,其中 N 是构成 KEY 的 Redis 对象的数量,而 M 则是这些对象的平均大小。

有序集合(sorted set)的反序列化复杂度为 O(N*M*log(N)) ,因为有序集合每次插入的复杂度为 O(log(N)) 。如果反序列化的对象是比较小的字符串,那么复杂度为 O(1) 。

可用版本

>= 2.6.0

案例

反序列化正确的值

RESTORE 反序列化正确的值

192.168.98.70:6379> SET haicoder.net "Hello, HaiCoder!" OK 192.168.98.70:6379> DUMP haicoder.net "\x00\x10Hello, HaiCoder!\x06\x00\x992\xb7\xdd\x1fR#\xb3" 192.168.98.70:6379> RESTORE haicoder 0 "\x00\x10Hello, HaiCoder!\x06\x00\x992\xb7\xdd\x1fR#\xb3" OK 192.168.98.70:6379> GET haicoder "Hello, HaiCoder!" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 SET 命令,设置键 haicoder.net 的值为 Hello, HaiCoder!。接着,使用 DUMP 命令,对 haicoder.net 进行序列化。

使用 RESTORE 命令,将 haicoder.net 序列化后的值反序列到 haicoder,并设置过期时间为 0,即永不过期。最后,我们使用 GET 命令,获取 haicoder 的值为原来 haicoder.net 的值。

反序列化错误的值

RESTORE 反序列化错误的值,返回错误

# 反序列化错误的值 192.168.98.70:6379> RESTORE haicoder 0 "\x00\x10Hello, HaiCoder!\x06\x00\x992\xb7\xdd\x1f" (error) ERR DUMP payload version or checksum are wrong

使用 RESTORE 命令,反序列化错误的值,返回错误。

Redis RESTORE命令总结

Redis RESTORE 命令用于反序列化 Redis 中给定的序列化值,并将它和给定的 KEY 关联。Redis RESTORE 命令语法:

192.168.98.70:6379> RESTORE KEY TTL serialized-value