*Redis SETEX 命令

设置 key-value 并同时指定过期时间(秒)。原子操作。


*语法

SETEX key seconds value

*参数说明

参数 类型 必填 说明
key String 键名
seconds Integer 过期时间(秒),必须 > 0
value String

*返回值

条件 返回值
设置成功 OK
seconds <= 0 返回错误

*时间复杂度

O(1)

*

*示例

> SETEX session:1001 3600 "user_data"
OK

> TTL session:1001
(integer) 3598

> GET session:1001
"user_data"

*常见错误

  1. seconds <= 0:返回错误。

*最佳实践

  1. 缓存原子写入:SETEX 是 SET + EXPIRE 的原子组合,避免 SETEXPIRE 失败导致脏数据长期存活。
  2. Session/Token 存储:登录令牌用 SETEX 设置合理过期时间,自动清理过期会话。

*FAQ

Q: SETEX 和 SET EX 有什么区别? A: 效果相同。SETEX 是老命令,SET key value EX seconds 是 Redis 2.6.12+ 的推荐写法。

Q: SETEX 会覆盖已有 key 吗? A: 会。key 已存在则覆盖 value 和 TTL