Redis RESTORE 命令用于反序列化 Redis 中给定的序列化值,并将它和给定的 KEY 关联。参数 TTL 以毫秒为单位为 KEY 设置生存时间;如果 TTL 为 0 ,那么不设置生存时间。
RESTORE 在执行反序列化之前会先对序列化值的 RDB 版本和数据校验和进行检查,如果 RDB 版本不相同或者数据不完整的话,那么 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 中给定的序列化值,并将它和给定的 KEY 关联。Redis RESTORE 命令语法:
192.168.98.70:6379> RESTORE KEY TTL serialized-value