教程 > Redis教程 > Redis 命令 阅读:103

Redis RENAME 命令

Redis RENAME 命令

返回 Redis键(keys)


Redis Rename 命令用于修改 key 的名称 。

语法

redis Rename 命令基本语法如下:

redis 127.0.0.1:6379> RENAME OLD_KEY_NAME NEW_KEY_NAME

可用版本

>= 1.0.0

返回值

  • 改名成功时提示 OK
  • 失败时候返回一个错误。

当 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)

返回 Redis键(keys)

查看笔记

扫码一下
查看教程更方便