Redis 可以根據訊息儲存時長 將key 刪除嗎

gongchengship發表於2024-07-04

是的,Redis 可以根據訊息的儲存時長(TTL, Time-To-Live)自動刪除鍵。您可以透過設定鍵的過期時間來實現這一點。以下是一些相關的命令和使用示例:

設定過期時間的命令

  1. EXPIRE:為鍵設定過期時間(以秒為單位)。

    EXPIRE key seconds
    
  2. PEXPIRE:為鍵設定過期時間(以毫秒為單位)。

    PEXPIRE key milliseconds
    
  3. EXPIREAT:為鍵設定一個具體的過期時間點(以 UNIX 時間戳表示,秒為單位)。

    EXPIREAT key timestamp
    
  4. PEXPIREAT:為鍵設定一個具體的過期時間點(以 UNIX 時間戳表示,毫秒為單位)。

    PEXPIREAT key timestamp
    
  5. SET:直接在設定鍵值的同時設定過期時間。

    SET key value EX seconds
    

查詢過期時間的命令

  1. TTL:檢視鍵的剩餘生存時間(以秒為單位)。

    TTL key
    
  2. PTTL:檢視鍵的剩餘生存時間(以毫秒為單位)。

    PTTL key
    

刪除過期時間的命令

  1. PERSIST:移除鍵的過期時間,使其永久存在。
    PERSIST key
    

示例

以下是一些示例,展示如何使用這些命令來設定和管理鍵的過期時間:

示例 1:使用 EXPIRE 設定過期時間

SET myKey "myValue"
EXPIRE myKey 60  # 設定 myKey 在 60 秒後過期

示例 2:在設定鍵值時指定過期時間

SET myKey "myValue" EX 60  # 設定 myKey 在 60 秒後過期

示例 3:檢查鍵的剩餘生存時間

TTL myKey  # 檢視 myKey 的剩餘生存時間(秒)
PTTL myKey  # 檢視 myKey 的剩餘生存時間(毫秒)

示例 4:移除鍵的過期時間

PERSIST myKey  # 移除 myKey 的過期時間

示例 5:使用 EXPIREAT 設定具體的過期時間點

# 假設當前 UNIX 時間戳為 1622547800
EXPIREAT myKey 1622547900  # 設定 myKey 在 1622547900 時間點過期

過期鍵的自動刪除

Redis 會自動刪除過期的鍵,刪除的方式包括以下兩種:

  1. 惰性刪除:當客戶端訪問一個鍵時,如果該鍵已經過期,Redis 會立即刪除它並返回空值。
  2. 定期刪除:Redis 會週期性地掃描一部分鍵,主動刪除其中已經過期的鍵。

透過以上方法,您可以輕鬆地管理 Redis 中鍵的生存時間,使其在合適的時間點自動刪除,從而有效地管理快取和資源。

相關文章