在 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 中為鍵設置過期時間,幫助管理內存和數據生命周期。