*Redis PEXPIRE 命令

PEXPIRE 为指定的 key 设置过期时间(毫秒)。


*语法

PEXPIRE key milliseconds [NX | XX | GT | LT]

*参数说明

参数 类型 必填 说明
key String 键名
milliseconds Integer 过期时间(毫秒)
NX Flag 仅在 key 无过期时间时设置
XX Flag 仅在 key 已有过期时间时设置
GT Flag 仅在新过期时间大于当前时设置
LT Flag 仅在新过期时间小于当前时设置

*返回值

  • 1:设置成功
  • 0:key 不存在或条件不满足(NX/XX/GT/LT 限制)

*时间复杂度

O(1)

*

*示例

*基本用法(毫秒级过期)

> SET mykey "hello"
OK
> PEXPIRE mykey 5000
(integer) 1
> PTTL mykey
(integer) 4982

*使用条件参数

> SET session "user123"
OK
> PEXPIRE session 3600000 NX
(integer) 1
> PEXPIRE session 7200000 XX
(integer) 1
> PEXPIRE session 600000 GT
(integer) 0

*key 不存在的场景

> PEXPIRE notexist 1000
(integer) 0

*常见错误

错误 原因 解决
ERR value is not an integer milliseconds 非整数 传入整数毫秒值
ERR value is not an integer or out of range milliseconds 超出范围 检查数值范围

*最佳实践

  • 需要毫秒级精度控制过期时间时使用 PEXPIRE,秒级精度用 EXPIRE 即可
  • 缓存必须设置过期时间,防止内存无限增长
  • 高频短生命周期缓存(如验证码、限流计数器)使用 PEXPIRE 精确控制
  • 配合 PTTL 查看剩余毫秒时间,确保过期设置正确

*FAQ

Q1: PEXPIRE 和 EXPIRE 有什么区别? A: PEXPIRE 以毫秒为单位,EXPIRE 以秒为单位。PEXPIRE 精度更高,适合需要毫秒级控制的场景。

Q2: PEXPIRE 和 PEXPIREAT 有什么区别? A: PEXPIRE 是设置相对过期时间(多少毫秒后过期),PEXPIREAT 是设置绝对过期时间(Unix 时间戳,毫秒)。

Q3: 毫秒级过期有什么实际使用场景? A: 验证码有效期(5 分钟 = 300000ms)、API 限流窗口、分布式锁的续期等需要精确毫秒控制的场景。