上一篇介紹了 Redis 的基本概念和資料型態,這篇要來介紹 Key 如何管理與操作。
Redis 的 Key 指令可以用來管理 Key,上一篇介紹了 Redis 支援的資料型態,這些資料型態都是由一個 Key 去對應一個或多個值。所以都適用 Key 指令來管理。
Set 指令是最基本建立 String 的指令,其他類型在上一篇有介紹對應的建立指令。
Del 用於刪除已經存在的 Key,可以一次指定刪除多個。
範例 :
Dump 用於序列化給的 Key 的 Value,並回傳輸出序列化後的值。
範例 :
Exists 用於檢查 Key 是否存在。
範例 :
Expire 指令用於設定 Key 的過期時間,當 Key 過期後就會被刪除不可以再使用。設定的時間以秒為單位。
範例 :
另有 pexpire
來設定過期時間,時間單位為毫秒。
Expireat 和 Expire 一樣用於設定 Key 的過期時間,差別在於時間的格式是給 Unix Timestamp。
範例 :
另有 pexpireat
來設定過期時間,時間單位為毫秒。
Keys 用於查詢所有符合給定的 pattern 的 Key。
範例 :
在 pattern 前後加上 *
可以查詢相似的 Key。
pattern 給 *
可以列出所有的 Key。
Move 用於將目前所在的 DB 移動到指定的 DB。
範例 :
當兩個 DB 都有相同的 Key 會移動失敗,如下。最後 move 指令回傳 0 代表失敗。
Persist 用於移除指定給 Key 的過期時間,讓 Key 永遠不會過期。
範例 :
set 指令後面所接的 EX 可以直接設定過期時間,也可以用 setex 指令。
可以看到第一個 set 指令設定給 pony 60 秒,所以馬上再下 persist 還可以移除 pony 的過期時間,但是第二個 set 指令只設定給 pony 1 秒,當過期了 Key 被刪除了就沒辦法再進行操作了。
TTL 以秒為單位回傳 Key 剩餘的過期時間。
範例 :
另有 pttl
以毫秒回傳 Key 剩餘的過期時間。
Randomkey 會隨機回傳 DB 中的一個 Key。
範例 :
Rename 可以重新對 Key 命名。
範例 :
如果新的 Key 已經存在時,還是可以執行 Rename,但是新 Key 的 Value 會被覆蓋掉,如下,原本 PonyNew 的 Value 是 24,再 pony 重新命名之後, ponyNew 的 Value 被換成 30 了。
呈上,Rename 要謹慎使用,最好先檢查要換的新 Key 名稱有沒有人用,可以先用 exists 檢查。
Renamenx 也是幫 Key 重新命名,但是 Renamenx 會先檢查新的 Key 名稱是否存在,如果不存在才會執行。這也解決了 Rename 容易不小心覆蓋到其他 Key 的問題。
範例 :
Type 會顯示指定的 Key 的類型。
範例 :
若 Key 不存在會回傳 none。
Scan 用於迭代 DB 中的 Key,每次會回傳一個新的游標位置表示目前迭代到哪。
cursor 是游標的位置,剩下的都是可以選擇要不要加。match 有加只會輸出符合 pattern 的 Key。Count 預設是迭代 10 筆。TYPE 可以選擇只要那些類型的 Key。
範例 :
加入 Match 指定輸出要符合的 Pattern。
加入 Count 指定要迭代的筆數。
加入 Type 指定輸出要符合的資料型態。
[1] Redis Commands
[2] Redis 键(key)
Redis