RESTORE命令将反序列化指定的序列化值,并将它和指定的key关联。
命令格式
RESTORE key ttl serialized-value [REPLACE]
可用版本:>=2.6.0
时间复杂度:查找指定key的复杂度为O(1) 。对key进行反序列化的复杂度为O(n*m),其中n是构成key的Redis对象的数量,而m则是这些对象的平均大小。有序集合(sorted set)的反序列化复杂度为O(n*m*log(n)),因为有序集合每次插入的复杂度为O(log(n))。如果反序列化的对象是比较小的字符串,那么复杂度为 O(1)。
RESTORE命令在执行反序列化之前,会先对序列化值的RDB版本和数据进行校验检查,如果RDB版本不相同或者数据不完整的话,那么RESTORE会拒绝进行反序列化,并返回一个错误。
命令参数
- ttl:指定key的生存时间,该参数以毫秒为单位,0则表示不设置生存时间。
- serialized-value:指定key的序列化值。
- REPLACE:如果指定key已经存在,并且指定了REPLACE选项,那么使用反序列化得出的值来代替key原有的值;相反地,如果key已经存在,但是没有指定REPLACE选项,那么命令返回一个错误。
在3.0版本及之后,当指定key存在时,如果没有REPLACE选项,RESTORE会返回"Target key name is busy"信息。
命令返回值
如果反序列化成功那么返回OK,否则返回一个错误。
示例
redis> RESTORE mykey 0 "\x00\x0bHello World\a\x00;Z\xc1\x0f\x96\x18\x0f\xca"
OK
redis> TYPE mykey
string
redis> GET mykey
"Hello World"