Redis GETEX 命令
语法
1 | GETEX key [EX seconds | PX milliseconds | EXAT unix-time-seconds | |
可用版本
≥ 6.2.0
时间复杂度
$O(1)$
ACL 类别
@write, @string, @fast
获取 key 的值,并可以选择设置其过期时间。GETEX 与 GET 类似,但它是一个带有额外选项的写命令。
选项
GETEX 命令支持以下选项来修改它的行为:
EX seconds — 设置指定的过期时间,单位是秒。
PX milliseconds — 设置指定的过期时间,单位是毫秒。
EXAT timestamp-seconds — 设置指定的 Unix 时间,key 将在该时间过期,单位是秒。
PXAT timestamp-milliseconds — 设置指定的 Unix 时间,key 将在该时间过期,单位是毫秒。
PERSIST — 删除 key 的过期时间,即 key 永不过期。
返回值
返回 key 的值,如果 key 不存在,则返回 nil。
示例 1
对已存在的 key 进行 GETEX 操作:
- 使用
SET命令设置一个键username的值为"johnson"。此时键没有过期时间,所以TTL命令返回 -1。 - 使用
GETEX命令获取username的值,并设置过期时间为 10 秒。所以TTL命令现在返回 9(两次命令间隔了 1 秒)。 - 键过期后,
TTL命令返回 -2,表示键已过期。
1 | redis> SET username "johnson" |
示例 2
使用 PX 选项,返回 key 的值,同时将 key 的过期时间设置为 60000 毫秒:
1 | redis> SET username "johnson" |
示例 3
使用 EXAT 选项,返回 key 的值,同时将 key 的过期时间设置在 2023-06-03 01:00:00:
1 | redis> SET username "johnson" |
示例 4
使用 PXAT 选项,返回 key 的值,同时将 key 的过期时间设置在 2023-06-03 01:00:00:
1 | redis> SET username "johnson" |
示例 5
使用 PERSIST 选项,返回 key 的值,同时移除 key 的过期时间,即不让该 key 自动过期:
1 | redis> TTL username |
(END)
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.


