扫码一下
查看教程更方便
Redis Rename 命令用于修改 key 的名称 。
redis Rename 命令基本语法如下:
redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME
>= 1.0.0
当 OLD_KEY_NAME 和 NEW_KEY_NAME 相同,或者 OLD_KEY_NAME 不存在时,返回一个错误。 当 NEW_KEY_NAME 已经存在时, RENAME 命令将覆盖旧值。
在集群模式下,key 和newkey 需要在同一个 hash slot。key 和newkey有相同的 hash tag 才能重命名。
如果 newkey 存在则会被覆盖,此种情况隐式执行了 DEL 操作,所以如果要删除的key的值很大会有一定的延时,即使RENAME 本身是常量时间复杂度的操作。
在集群模式下,key 和newkey 需要在同一个 hash slot。key 和newkey有相同的 hash tag 才能重命名。
3.2.0版本之前: 源 key 和目的 key 相同返回错误
# key 存在且 newkey 不存在
redis 127.0.0.1:6379> SET message "hello world"
OK
redis 127.0.0.1:6379> RENAME message greeting
OK
redis 127.0.0.1:6379> EXISTS message # message 不复存在
(integer) 0
redis 127.0.0.1:6379> EXISTS greeting # greeting 取而代之
(integer) 1
# 当 key 不存在时,返回错误
redis 127.0.0.1:6379> RENAME fake_key never_exists
(error) ERR no such key
# newkey 已存在时, RENAME 会覆盖旧 newkey
redis 127.0.0.1:6379> SET pc "lenovo"
OK
redis 127.0.0.1:6379> SET personal_computer "dell"
OK
redis 127.0.0.1:6379> RENAME pc personal_computer
OK
redis 127.0.0.1:6379> GET pc
(nil)
redis 127.0.0.1:6379> GET personal_computer # 原来的值 dell 被覆盖了
"lenovo"
RENAME命令的时间复杂度为:O(1)