命令:RENAME key newkey
鍵重命名。
127.0.0.1:6379> set test1 value1
OK
127.0.0.1:6379> rename test1 test2
OK
如果鍵不存在會(huì)報(bào)錯(cuò)。重命名會(huì)執(zhí)行鍵的刪除操作,因此在鍵存儲(chǔ)的value比較大時(shí),要謹(jǐn)慎使用。
在集群模式下,key和newkey必須位于同一hash slot中,因此只有具有相同hash標(biāo)記的密鑰才能在集群中可靠地重命名。
在小于等于3.2.0版本中,如果key和newkey相同,則會(huì)報(bào)錯(cuò)。
如果在rename之前,鍵已經(jīng)存在,那么它的值也將被覆蓋
127.0.0.1:6379> set test1 value1
OK
127.0.0.1:6379> set test2 value2
OK
127.0.0.1:6379> get test1
"value1"
127.0.0.1:6379> get test2
"value2"
127.0.0.1:6379> rename test1 test2
OK
127.0.0.1:6379> get test1
(nil)
127.0.0.1:6379> get test2
"value1"
為避免重命名覆蓋已有鍵的問(wèn)題,可應(yīng)用命令renamenx,確保只有newkey不存在時(shí)候才能覆蓋。
127.0.0.1:6379> set test1 value1
OK
127.0.0.1:6379> set test2 value2
OK
127.0.0.1:6379> renamenx test1 test2
(integer) 0
127.0.0.1:6379> get test1
"value1"
127.0.0.1:6379> get test2
"value2"
127.0.0.1:6379> renamenx test1 test3
(integer) 1
127.0.0.1:6379> get test1
(nil)
127.0.0.1:6379> get test3
"value1"