设置过期时间这一操作可以通过 命令或者 PEXPIREAT 命令来完成。其中,EXPIREAT 命令接受一个键和一个秒级精度的 UNIX 时间戳为参数,当系统的当前 UNIX 时间超过命令指定的 UNIX 时间时,给定的键就会被移除:

    与此类似,PEXPIREAT 命令接受一个键和一个毫秒级精度的 UNIX 时间戳为参数,当系统的当前 UNIX 时间超过命令指定的 UNIX 时间时,给定的键就会被移除:

      如果我们想要让 msg 键在 UNIX 时间 1450005000 秒之后不再存在,那么可以执行以下命令:

      1. redis> EXPIREAT msg 1450005000
      2. (integer) 1

      在执行这个 EXPIREAT 命令之后,如果我们在 UNIX 时间 1450005000 秒或之前访问 msg 键,那么 Redis 将返回 msg 键的值:

      1. redis> GET msg
      2. (nil)

      表 12-4 展示了 msg 键从设置过期时间到被移除的整个过程。


      表 12-4 msg 键从设置过期时间到被移除的整个过程


      以下是一个使用 PEXPIREAT 命令设置过期时间的例子,这个命令可以将 number 键的过期时间设置为 UNIX 时间 1450005000000 毫秒:

      1. redis> PEXPIREAT number 1450005000000

      在 UNIX 时间 1450005000000 毫秒或之前访问 number 键可以得到它的值:

      1. redis> GET number
      2. (nil)

      表 12-5 展示了 number 键从设置过期时间到被移除的整个过程。


      表 12-5 number 键从设置过期时间到被移除的整个过程


      跟 / PEXPIRE 命令会更新键的生存时间一样,EXPIREAT / PEXPIREAT 命令也会更新键的过期时间:如果用户在执行 EXPIREAT 命令或 PEXPIREAT 命令的时候,给定键已经带有过期时间,那么命令首先会移除键已有的过期时间,然后再为其设置新的过期时间。

      比如在以下调用中,第二条 EXPIREAT 命令就将 msg 键的过期时间从原来的 1500000000 修改成了 1600000000

      1. redis> EXPIREAT msg 1500000000
      2. (integer) 1
      3.  
      4. (integer) 1