*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"
*常见错误
- seconds <= 0:返回错误。
*最佳实践
- 缓存原子写入:SETEX 是 SET + EXPIRE 的原子组合,避免 SET 后 EXPIRE 失败导致脏数据长期存活。
- 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。