Redis 支援多種資料類型以儲存項目集,包括列表(list)、集合(set)和雜湊(hash)。上週的文章介紹了 List 資料類型,並重點介紹了管理 List 的主要命令。在今天的後續文章中,我們將把注意力轉向 Set 類型。在Redis中,Set 類似於 List,但 Set 不保留元素的任何特定順序,並且每個元素必須是唯一的。本文將介紹使用 redis-cli 和 Navicat for Redis 管理 Set 的一些主要命令。
建立 Set
在 Redis 中,我們可以使用 SADD 命令建立 Set,該命令會將指定成員加入鍵中:
SADD key member [member ...]
如前所述,每個元素必須是唯一的。因此,已經是 Set 一部分的指定成員將被忽略。如果鍵不存在,命令將建立一個新的 Set 並加入唯一的指定成員。如果鍵已經存在或不是 Set,則傳回一個錯誤。
以下是建立「vehicles」集合的命令:
SADD vehicles "Infiniti" // 1 SADD vehicles "Mazda" // 1 SADD vehicles "Ford" "Mercedes" // 2 SADD vehicles "Porsche" "Mercedes" // 1
請注意,SADD 命令會傳回該陳述式加入成員的數量,而不是 Set 的大小。我們可以看到最後一行只加入了一個元素,因為「vehicles」集合已經有一個「Mercedes」值。
在 Navicat 中建立 Set
在 Navicat for Redis 編輯器中,Set 值表示為「元素」。按一下元素右側的省略號 [...] 按鈕會開啟一個特殊的編輯器,你可以在其中輸入一個 Set 元素:
按一下「套用」按鈕會加入新的 Set 或元素。Navicat 會自動移除重複值。
從 Set 中移除成員
我們可以使用 SREM 命令從 Set 中移除成員:
SREM key member [member ...]
SREM vehicles "Mazda" "Mercedes" // 2 SREM vehicles "Dodge" // 0
SREM 與 SADD 命令類似,它會傳回已移除的成員數量。
在 Navicat 編輯器中,可以選取任何 Set 元素並按一下元素值下面的「刪除 [-]」按鈕來移除它:
驗證值是否存在
我們可以使用 SISMEMBER 命令驗證成員是否是 Set 的一部分:
SISMEMBER key member
如果成員是 Set 的一部分,此命令會傳回 1;否則,傳回 0:
SISMEMBER vehicles "Infiniti" // 1 SISMEMBER vehicles "Alfa Romeo" // 0
檢視 Set
我們可以使用 SMEMBERS 命令顯示 Set 中的所有成員:
SMEMBERS key
讓我們看看目前在「vehicles」集合中的所有成員:
SMEMBERS vehicles // returns "Infiniti", "Ford", "Porsche"
合併多個 Set
我們可以使用 SUNION 命令很容易地合併多個 Set:
SUNION key [key ...]
SUNION 命令的每個引數表示我們要合併到較大 Set 中的 Set。請注意,為了保持元素的唯一性,命令會移除任何重複的成員。
假設有另一個名為 more_vehicles 的 Set,其中包含「Corvette」和「Alfa Romeo」值。我們可以按以下方式檢視 vehicles 和 more_vehicles 的所有成員:
SUNION vehicles more_vehicles // "Infiniti", "Ford", "Porsche", "Corvette", "Alfa Romeo"
總結
本文重點介紹了使用 redis-cli 和 Navicat for Redis 管理 Redis Set 所用到的一些主要命令。
如果你想試用 Navicat for Redis,可以 在此 下載試用版。試用版具備完整功能,試用期為 14 天。