是的,Redis 提供了键(key)过期(expires)功能,允许用户为存储的每个键设置一个生存时间(TTL, Time To Live)。一旦到达设定的生存时间,Redis会自动删除这个键及其对应的值,从而帮助管理内存并自动清理不再需要的数据。
设置键的过期时间
你可以使用以下命令来为键设置过期时间:
- EXPIRE key seconds:设置键
key
在seconds
秒后过期。 - PEXPIRE key milliseconds:类似
EXPIRE
,但时间单位是毫秒。 - EXPIREAT key timestamp:设置键
key
在指定的timestamp
(Unix时间戳)过期。 - PEXPIREAT key milliseconds-timestamp:与
EXPIREAT
相似,但使用的是毫秒级的Unix时间戳。
查看和管理过期时间
- TTL key:查询键
key
的剩余生存时间(单位:秒),如果键不存在或没有设置过期时间,返回-2或-1。 - PTTL key:同
TTL
,但返回的是剩余生存时间的毫秒数。 - KEYS
pattern
EXPIRED:在Redis 6.0及以上版本,可以使用KEYS
命令配合EXPIRED
选项查找已经过期但还未被删除的键(仅限于Redis Cluster,且需开启track-expired-keys
配置)。
过期键的删除策略
Redis使用惰性删除和定期删除两种策略来处理过期键:
- 惰性删除:在尝试访问一个键时,Redis会检查该键是否已过期,如果过期则在访问前删除。
- 定期删除:Redis后台周期性地检查并删除一部分已过期的键,以避免过期键积累导致的内存占用问题。
需要注意的是,Redis并不能保证过期键会在精确的过期时间被删除,而是提供了一个近似的过期机制。此外,如果大量键同时过期,可能会暂时占用较高的CPU资源进行删除操作。
过期功能在实现缓存淘汰、会话管理、消息有效期等场景时非常有用,能够有效地自动管理数据生命周期。