Redis 实现数据自动过期的主要机制是通过设置键的过期时间(TTL,Time To Live)来实现的。当一个键被设置了过期时间后,Redis会在指定的时间后自动删除该键及其对应的值。以下是实现数据自动过期的几种方式:
你可以使用 EXPIRE 或 PEXPIRE 命令为键设置过期时间。
EXPIRE key seconds
或者
PEXPIRE key milliseconds
你可以在设置键值的同时指定过期时间,使用 SET 命令的扩展形式。
SET key value EX seconds
或者
SET key value PX milliseconds
EXPIREAT 或 PEXPIREAT 命令如果你已经知道过期时间的精确时间戳,可以使用 EXPIREAT 或 PEXPIREAT 命令。
EXPIREAT key timestamp
或者
PEXPIREAT key milliseconds-timestamp
Redis 内部有一个后台线程,每隔一段时间(默认是每秒10次)会检查并删除过期的键。这个过程称为“惰性删除”和“定期删除”。
你可以通过配置文件或命令行参数来调整 Redis 的过期策略,例如:
maxmemory-policy:当内存达到最大值时,Redis 如何处理新写入的数据。可以设置为 volatile-lru、allkeys-lru 等策略,其中 volatile 表示只对设置了过期时间的键进行淘汰,allkeys 表示对所有键进行淘汰。timeout:设置客户端空闲连接超时时间。以下是一个简单的示例,展示如何设置键的过期时间并自动删除:
# 设置键值对并设置过期时间为60秒
SET mykey "Hello, Redis!" EX 60
# 检查键是否存在
EXISTS mykey
# 等待60秒后再次检查键是否存在
sleep 60
EXISTS mykey # 应该返回0,表示键已被删除
通过上述方法,Redis 可以有效地实现数据的自动过期,帮助你管理内存使用和数据生命周期。