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.


