Redis GETDEL 命令
语法
1 | GETDEL key |
可用版本
≥ 6.2.0
时间复杂度
$O(1)$
ACL 类别
@write
, @string
, @fast
获取 key
的值并删除该 key
。
- 如果
key
不存在,则返回nil
。 - 如果存储在
key
的值不是字符串类型,则返回一个错误。
该命令与 GET
类似,除了它在成功时会删除键(当且仅当键的值类型是字符串时)。
返回值
返回 key
的值,如果 key
不存在则返回 nil
,如果 key
的值类型不是字符串则返回错误。
示例 1
在此示例中演示了 Redis 的 GETDEL
命令同时获取值并删除的效果。
在这个示例中:
- 首先使用
SET
命令设置 KEY token 的值为access_token
- 使用
GET
命令获取 token 的值,返回access_token
- 使用
GETDEL
命令获取 token 的值,并删除该 KEY,返回access_token
- 再次使用
GET
命令获取 token 的值,由于该 KEY 已被删除,所以返回nil
1 | redis> SET token 'access_token' |
示例 2
在此示例中演示了 GETDEL
命令只支持字符串键的限制,对其他类型的键使用会报错。
在这个示例中:
- 首先使用
LPUSH
命令向 list_key 列表键插入a
值 - 尝试使用
GETDEL
命令获取 list_key 的值并删除该键 - 返回
WRONGTYPE Operation against a key holding the wrong kind of value
错误
这是因为 GETDEL
命令只支持字符串键,而 list_key 是一个列表键,所以使用 GETDEL
操作 list_key 会报错。
1 | redis> LPUSH list_key a |
示例 3
以下示例演示了对不存在的键使用 GETDEL
命令,不会报错,会返回 nil
的结果。
在这个示例中:
- 首先使用
EXISTS
命令检查 tokentoken 键是否存在,返回 0 表示该键不存在 - 尝试使用
GETDEL
命令获取 tokentoken 键的值并删除该键 GETDEL
命令返回nil
这是因为 GETDEL
操作的键 tokentoken 本不存在,所以没有值可以获取和删除,所以 GETDEL
返回 nil
。
1 | redis> EXISTS tokentoken |
(END)
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.