Redis高级特性之expire
Redis中可以使用expire命令设置一个键的生存时间,到时间后Redis会自动删除这个键。它的一个典型应用场景是:手机验证码。我们平时在登录或者注册的时候,手机会接收到一个验证码,上面会提示验证码的过期时间,过了这个时间之后这个验证码就不能用了。
expire常见操作如下:

案例:
127.0.0.1:6379> set randomcode:1 10086
OK
#设置key的过期时间
127.0.0.1:6379> expire randomcode:1 200
(integer) 1
#获取key的剩余有效时间
127.0.0.1:6379> ttl randomcode:1
(integer) 189
#取消key的过期时间
127.0.0.1:6379> persist randomcode:1
(integer) 1
127.0.0.1:6379> ttl randomcode:1
(integer) -1
#此时再查看这个key的剩余有效时间,返回的值是-1,-1表示这个key是一个永久存在的key
#还可以通过expireat指定key在指定时间点过期
#首先获取当前时间戳
[root@master ~]# date +%s
1699803522
127.0.0.1:6379> expireat randomcode:1 1699803556
(integer) 1
#过一会再查看这个key的剩余有效时间,返回的是-2,表示这个key已经被删除了。
127.0.0.1:6379> ttl randomcode:1
(integer) -2
127.0.0.1:6379> exists randomcode:1
(integer) 0
小结: - 当key永久存在的时候,执行ttl返回的是-1。 - 当key被设置了过期时间之后,执行ttl返回的就是这个key剩余的有效时间。 - 当key已经被删除了,不存在的时候,执行ttl返回的是-2。