在 Redis 中,雜湊(Hash)是一種對應字串鍵和欄位值的資料結構。因此,Hash 特別適合用於表示基本物件和儲存計數器分組等。本文將介紹使用 redis-cli 和 Navicat for Redis 管理 Hash 的一些主要命令。
建立和更新 Hash
在 Redis 中,鍵(key)就是 Hash 的名稱,而值(value)則表示欄位名稱和欄位值的項目列表。例如,我們可以將車輛物件描述如下:
vehicle make Toyota model Crown trim Platinum year 2023 color black
在處理 Hash 時,我們可以使用與字串(string)類型相似的命令,因為 Hash 欄位值就是字串。例如,命令 HSET 用於設定 Hash 欄位的值。如果鍵不存在,命令將建立一個儲存 Hash 的新鍵。而如果 Hash 中已存在該欄位,則會使用新值覆蓋其值。
HSET key field value
對於每個 HSET 命令,Redis 會傳回以下其中一個數字:
- 如果欄位是 Hash 中的新欄位,並設定了值,則傳回 1。
- 如果 Hash 已存在欄位,並更新了值,則傳回 0。
讓我們建立上述描述的「vehicle」Hash:
HSET vehicle make "Toyota" // 1 HSET vehicle model "Crown" // 1 HSET vehicle trim "Platinum" // 1 HSET vehicle year 2015 // 1 HSET vehicle color "black" // 1
現在,如果我們將 year 欄位的值更新為 2022,HSET 命令會傳回 0:
HSET vehicle year 2022 // 0
在 Navicat 中建立 Hash
在 Navicat for Redis 中,可以使用內建的編輯器加入 Hash 欄位。按一下欄位右側的省略號 [...]按鈕會開啟一個特殊的編輯器,你可以在其中輸入個別的欄位值。
按一下「套用」按鈕以加入新的 Hash 或欄位。
擷取 Hash 欄位的值
我們可以使用 HGET 命令從 Hash 中擷取欄位的值:
HGET key field
例如,可以使用它來驗證我們得到的 year 值為2022,而不是2015:
HGET vehicle year // 2022
還可以使用 HGETALL 命令取得 Hash 的所有內容(欄位和值):
HGETALL key
讓我們試試看:
HGETALL vehicle /* Returns: make Toyota model Crown trim Platinum year 2022 color black */
當提供的鍵參數不存在時,HGETALL 命令會傳回一個空白清單。
刪除欄位
HDEL 命令從 Hash 鍵刪除指定的欄位。如果 Hash 中不存在指定的欄位,該欄位將會被忽略。執行 HDEL 命令後,會傳回從 Hash 中刪除的欄位數量。如果鍵不存在,則被視為空白的 Hash,HDEL 命令會傳回 0。
HDEL key field [field ...]
讓我們試用 HDEL 命令刪除 year 和 color 欄位:
HDEL vehicle year color // 2
在 Navicat 編輯器中,可以選取一個欄位並按一下欄位清單下方的「刪除 [-]」按鈕來移除它:
總結
本文重點介紹了使用 redis-cli 和 Navicat for Redis 管理 Redis Hash 所用到的一些主要命令。
如果你想試用 Navicat for Redis,可以 在此 下載試用版。試用版具備完整功能,試用期為 14 天。