在 Redis 中,可以为键(key)设置过期时间,使其在指定的时间后自动删除。以下是几种常用的方法来设置键的过期时间:
EXPIRE 命令EXPIRE 命令用于为指定的键设置过期时间(以秒为单位)。
语法:
EXPIRE key seconds
示例:
SET mykey "Hello, Redis!"
EXPIRE mykey 60 # 设置 mykey 在 60 秒后过期
PEXPIRE 命令PEXPIRE 命令与 EXPIRE 类似,但它以毫秒为单位设置过期时间。
语法:
PEXPIRE key milliseconds
示例:
SET mykey "Hello, Redis!"
PEXPIRE mykey 60000 # 设置 mykey 在 60000 毫秒(60 秒)后过期
可以在 SET 命令中同时设置键的值和过期时间,使用 EX、PX、EXAT 或 PXAT 选项。
语法:
SET key value EX seconds
SET key value PX milliseconds
SET key value EXAT timestamp
SET key value PXAT milliseconds-timestamp
示例:
# 使用 EX 设置 60 秒后过期
SET mykey "Hello, Redis!" EX 60
# 使用 PX 设置 60000 毫秒(60 秒)后过期
SET mykey "Hello, Redis!" PX 60000
# 使用 EXAT 设置具体的过期时间戳(秒级)
SET mykey "Hello, Redis!" EXAT 1697059200
# 使用 PXAT 设置具体的过期时间戳(毫秒级)
SET mykey "Hello, Redis!" PXAT 1697059200000
SETEX 命令SETEX 是 SET 和 EXPIRE 的组合命令,用于在设置键值的同时指定过期时间(以秒为单位)。
语法:
SETEX key seconds value
示例:
SETEX mykey 60 "Hello, Redis!"
PSETEX 命令PSETEX 是 SET 和 PEXPIRE 的组合命令,用于在设置键值的同时指定过期时间(以毫秒为单位)。
语法:
PSETEX key milliseconds value
示例:
PSETEX mykey 60000 "Hello, Redis!"
过期时间的精度: EXPIRE 和 PEXPIRE 设置的过期时间是近似的,Redis 会尽量在指定时间后删除键,但不保证精确到毫秒级别。
持久化影响: 如果 Redis 使用 RDB 或 AOF 持久化,过期键在重启后可能会恢复。若希望键在过期后彻底删除,可以结合使用 volatile 或 allkeys-lru 等过期策略。
检查和修改过期时间: 可以使用 TTL 命令查看键的剩余过期时间,或使用 PERSIST 命令移除键的过期时间。
示例:
TTL mykey # 查看 mykey 的剩余过期时间(秒)
PERSIST mykey # 移除 mykey 的过期时间
通过以上方法,可以灵活地在 Redis 中为键设置过期时间,帮助管理内存和数据生命周期。