设置过期时间这一操作可以通过 命令或者 PEXPIREAT
命令来完成。其中,EXPIREAT
命令接受一个键和一个秒级精度的 UNIX 时间戳为参数,当系统的当前 UNIX 时间超过命令指定的 UNIX 时间时,给定的键就会被移除:
与此类似,PEXPIREAT
命令接受一个键和一个毫秒级精度的 UNIX 时间戳为参数,当系统的当前 UNIX 时间超过命令指定的 UNIX 时间时,给定的键就会被移除:
如果我们想要让 msg
键在 UNIX 时间 1450005000 秒之后不再存在,那么可以执行以下命令:
- redis> EXPIREAT msg 1450005000
- (integer) 1
在执行这个 EXPIREAT
命令之后,如果我们在 UNIX 时间 1450005000 秒或之前访问 msg
键,那么 Redis 将返回 msg
键的值:
- redis> GET msg
- (nil)
表 12-4 展示了 msg
键从设置过期时间到被移除的整个过程。
表 12-4 msg
键从设置过期时间到被移除的整个过程
以下是一个使用 PEXPIREAT
命令设置过期时间的例子,这个命令可以将 number
键的过期时间设置为 UNIX 时间 1450005000000 毫秒:
- redis> PEXPIREAT number 1450005000000
在 UNIX 时间 1450005000000 毫秒或之前访问 number
键可以得到它的值:
- redis> GET number
- (nil)
表 12-5 展示了 number
键从设置过期时间到被移除的整个过程。
表 12-5 number
键从设置过期时间到被移除的整个过程
跟 / PEXPIRE
命令会更新键的生存时间一样,EXPIREAT
/ PEXPIREAT
命令也会更新键的过期时间:如果用户在执行 EXPIREAT
命令或 PEXPIREAT
命令的时候,给定键已经带有过期时间,那么命令首先会移除键已有的过期时间,然后再为其设置新的过期时间。
比如在以下调用中,第二条 EXPIREAT
命令就将 msg
键的过期时间从原来的 1500000000
修改成了 1600000000
:
- redis> EXPIREAT msg 1500000000
- (integer) 1
- (integer) 1