有时候我们并不希望redis的key一直存在。例如缓存,验证码等数据,我们希望它们能在一定时间内自动的被销毁。redis提供了一些命令,能够让我们对key设置过期时间,并且让key过期之后被自动删除。
一、设置/更新Key过期时间
秒级
1
2
3EXPIRE keyname "seconds"
接口描述:设置一个key在当前时间"seconds"(秒)之后过期。返回1代表设置成功,返回0代表key不存在或者无法设置过期时间。毫秒级
1
2
3PEXPIRE keyname "milliseconds"
接口描述:设置一个key在当前时间"milliseconds"(毫秒)之后过期。返回1代表设置成功,返回0代表key不存在或者无法设置过期时间。
二、获取Key过期时间
秒级
1
2
3
4TTL keyname
接口描述:获取key的过期时间。如果key存在过期时间,返回剩余生存时间(秒);
如果key是永久的,返回-1;如果key不存在或者已过期,返回-2。毫秒级
1
2
3
4PTTL keyname
接口描述:获取key的过期时间。如果key存在过期时间,返回剩余生存时间(毫秒);
如果key是永久的,返回-1;如果key不存在或者已过期,返回-2。三、移除Key的过期时间
移除key的过期时间
1
2
3PERSIST key
移除key的过期时间,将其转换为永久状态。如果返回1,代表转换成功。如果返回0,代表key不存在或者之前就已经是永久状态。四、将Key的值设为value,并将key的生存时间设置为seconds秒
将Key的值设为value,并将key的生存时间设置为seconds秒
1
2
3
4SETEX keyname <过期时间> <value>
将键 key 的值设置为 value , 并将键 key 的生存时间设置为 seconds 秒钟。
如果键 key 已经存在, 那么 SETEX 命令将覆盖已有的值。等同于如下命令:
1
2SET key value
EXPIRE key secondsSETEX示例:
1
2
3
4
5
6
7
8SETEX cache_user_id 60 10086
OK
GET cache_user_id #值
"10086"
TTL cache_user_id #剩余生存时间
(integer) 49
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2019/09/17/redis-key过期时间/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!