键过期功能
让 Redis 在指定的时间自动删除特定的键。
键过期功能的相关命令
类型 | 命令 |
---|---|
设置生存时间 | EXPIRE 命令和 PEXPIRE 命令。 |
设置过期时间 | EXPIREAT 命令和 PEXPIREAT 命令。 |
查看剩余生存时间 | TTL 命令和 PTTL 命令。 |
删除生存时间或过期时间 | PERSIST 命令。 |
EXPIRE key seconds
将键 key 的生存时间设置为指定的秒数。
PEXPIRE key milliseconds
将键 key 的生存时间设置为指定的毫秒数。
如果给定的键不存在,那么 EXPIRE 和 PEXPIRE 将返回 0 ,表示设置失败;如果命令返回 1 ,那么表示设置成功。
EXPIREAT key timestamp
将键 key 的过期时间设置为指定的秒级 UNIX 时间戳。
PEXPIREAT key milliseconds-timestamp
将键 key 的过期时间设置为指定的毫秒级 UNIX 时间戳。
如果给定的键不存在,那么 EXPIREAT 和 PEXPIREAT 将返回 0 ,表示设置失败;如果命令返回 1 ,那么表示设置成功。
TTL key
以秒为单位,返回键的剩余生存时间。
PTTL key
以毫秒为单位,返回键的剩余生存时间。
TTL 和 PTTL 可能会返回三种不同的值:
返回值 | 意义 |
---|---|
-2 | 键不存在。 |
-1 | 键存在,但没有设置过期时间或者生存时间。 |
= 0 | 键的剩余生存时间。 |
PERSIST key
移除为键 key 设置的过期时间或生存时间,使得它不会被 Redis 自动删除。
键过期功能的应用
自动更新缓存、自动刷新排行榜、定时删除的用户 Session。
SETEX key seconds value
设置键key的值为value,seconds秒后过期
PSETEX key milliseconds value
设置键key的值为value,milliseconds毫秒后过期
尽管目前 SETEX 和 PSETEX 都能正常使用,但我个人还是建议尽量使用 SET 而不是 SETEX 或者PSETEX ,因为使用 SET 来设置生存时间更简洁一些,而比较旧的 SETEX 和 PSETEX 在将来可能会被废弃。