前文已经提及过Redis中对于键值对操作的一些命令,如DEL
、EXPIRE / PEXPIRE
、TTL / PTTL
以及EXISTS
。今天我们继续介绍Redis中对键值对操作的相关命令。
TYPE
TYPE
命令用于获取指定键值对的类型,返回的值有string
、list
、set
、zset
、hash
以及stream
。当键值对不存在时返回none
。
TYPE key
示例
redis> SET key1 "value"
OK
redis> LPUSH key2 "value"
(integer) 1
redis> SADD key3 "value"
(integer) 1
redis> TYPE key1
string
redis> TYPE key2
list
redis> TYPE key3
set
redis> TYPE key4
none
RENAME / RENAMENX
RENAME
命令用于将指定键名重命名,并在键值对不存在时返回一个错误。若新的键名已存在,将会覆盖旧值(无论旧值是否和新值是同一类型)。当Redis版本小于等于3.2.0时,若新键名与旧键名相同将返回错误。
RENAME key newkey
若原键key
有关联过期时间,则无论新键是否关联有过期时间,都将被覆盖。
当新键名已经存在时,执行RENAME
命令时会先隐式地调用DEL
操作删除对应的键值对,再执行重命名的操作。
RENAMENX
命令与RENAME
相似,二者的区别为RENAMENX
仅在新键名不存在的情况下才完成重命名的操作。若新键名newkey
已存在将会返回0
,否则在正确完成重命名操作后返回0
。同样,当原键名不存在时将返回错误。
RENAMENX key newkey
示例
redis> SET greeting "hello"
OK
redis> RENAME greeting my-greeting
OK
redis> EXISTS greeting
(integer) 0
redis> EXISTS my-greeting
(integer) 1
redis> RENAME greeting new-greeting
(error) ERR no such key
当键名key1
和key2
都且类型不同时,使用RENAME
也将覆盖key2
的值: