在 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 中为键设置过期时间,帮助管理内存和数据生命周期。