iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0
自我挑戰組

Hello SQL 初次見面你好系列 第 28

Day28 Redis 中什麼是臨時鍵-值對

  • 分享至 

  • xImage
  •  

當我們提及資料儲存,我們通常希望資料能夠長時間地保存。但在某些情形之下,我們可能只需要暫時地保存某些資料,或者希望資料在某段時間後自動失效。例如,快取的資料、提供短暫的授權功能、或者一次性的驗證碼。這時,Redis 中的臨時鍵-值對功能就派上用場

什麼是臨時鍵-值對?

在 Redis 中,臨時鍵-值對是指一個鍵和其相對應的值有一個設定的生命週期,當這個生命週期到達時,這個鍵和其值會自動從 Redis 中被移除。這個生命週期被稱為 "TTL"(Time-To-Live),表示這個鍵可以存活的時間

如何設定臨時鍵-值對?

1. EXPIRE / PEXPIRE

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

    127.0.0.1:6379> EXPIRE mykey 10
    (integer) 1
    
  • PEXPIRE: 設定鍵的過期時間(以毫秒為單位)。

    127.0.0.1:6379> PEXPIRE mykey 10000
    (integer) 1
    

2. TTL / PTTL

  • TTL: 查詢指定鍵的剩餘生存時間(以秒為單位)。

    127.0.0.1:6379> TTL mykey
    (integer) 8
    
  • PTTL: 查詢指定鍵的剩餘生存時間(以毫秒為單位)。

    127.0.0.1:6379> PTTL mykey
    (integer) 8000
    

3. PERSIST

移除指定鍵的過期時間,使其永不過期。

127.0.0.1:6379> PERSIST mykey
(integer) 1

4. SETEX / PSETEX

  • SETEX: 設定鍵的值和過期時間(以秒為單位)。

    127.0.0.1:6379> SETEX mykey 10 "Hello"
    OK
    
  • PSETEX: 設定鍵的值和過期時間(以毫秒為單位)。

    127.0.0.1:6379> PSETEX mykey 10000 "Hello"
    OK
    

5. SET EXAT / SET PXAT

  • SET EXAT: 使用絕對的 UNIX 時間戳(以秒為單位)來設定鍵的過期時間。

    127.0.0.1:6379> SET mykey "Hello" EXAT 1672531200
    OK
    
  • SET PXAT: 使用絕對的 UNIX 時間戳(以毫秒為單位)來設定鍵的過期時間。

    127.0.0.1:6379> SET mykey "Hello" PXAT 1672531200500
    OK
    

6. SET KEEPTTL

使用 SET 命令更新鍵的值,同時保留原來的過期時間。

127.0.0.1:6379> SET mykey "Hello" KEEPTTL
OK

7. EXPIREAT

  • 使用絕對的 UNIX 時間戳(以秒為單位)來設定鍵的過期時間。

    127.0.0.1:6379> EXPIREAT mykey 1672531200
    (integer) 1
    

8. PEXPIRE / PEXPIREAT

  • PEXPIREAT: 使用絕對的 UNIX 時間戳(以毫秒為單位)來設定鍵的過期時間。

    127.0.0.1:6379> PEXPIREAT mykey 1672531200500
    (integer) 1
    

這些指令允許我們對 Redis 中的鍵進行靈活的生命周期管理。

注意事項

  • key 若是過期的話,將自動從資料庫中刪除
  • 在設定過期時間時要特別注意,避免非預期的數據損失
  • 過期時間是 key 的屬性,不是 value 的屬性,這意味著如果你設定了一個 key 的過期時間,再對該 key 進行操作(如 SET),原先的過期時間會被移除

上一篇
Day 27: Redis 中資料型態的基本操作(下)
下一篇
Day 29 Redis 中遍歷(SCAN)
系列文
Hello SQL 初次見面你好30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言