1.SADD key member [member ...]
將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略。
假如 key 不存在,則創建一個只包含 member 元素作成員的集合。
當 key 不是集合類型時,返回一個錯誤。
在Redis2.4版本以前, SADD 只接受單個 member 值。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N), N 是被添加的元素的數量。
- 返回值:
- 被添加到集合中的新元素的數量,不包括被忽略的元素。
2.SCARD key
返回集合 key 的基數(集合中元素的數量)。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(1)
- 返回值:
-
集合的基數。當 key 不存在時,返回 0 。
3.SDIFF key [key ...]
返回一個集合的全部成員,該集合是所有給定集合之間的差集。
不存在的 key 被視為空集。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N), N 是所有給定集合的成員數量之和。
- 返回值:
- 交集成員的列表。
-
redis> SMEMBERS peter's_movies 1) "bet man" 2) "start war" 3) "2012" redis> SMEMBERS joe's_movies 1) "hi, lady" 2) "Fast Five" 3) "2012" redis> SDIFF peter's_movies joe's_movies 1) "bet man" 2) "start war"
4.SDIFFSTORE destination key [key ...]
這個命令的作用和 SDIFF 類似,但它將結果保存到 destination 集合,而不是簡單地返回結果集。
如果 destination 集合已經存在,則將其覆蓋。
destination 可以是 key 本身。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N), N 是所有給定集合的成員數量之和。
- 返回值:
- 結果集中的元素數量。
redis> SMEMBERS joe's_movies 1) "hi, lady" 2) "Fast Five" 3) "2012" redis> SMEMBERS peter's_movies 1) "bet man" 2) "start war" 3) "2012" redis> SDIFFSTORE joe_diff_peter joe's_movies peter's_movies (integer) 2 redis> SMEMBERS joe_diff_peter 1) "hi, lady" 2) "Fast Five"
5.SINTER key [key ...]
返回一個集合的全部成員,該集合是所有給定集合的交集。
不存在的 key 被視為空集。
當給定集合當中有一個空集時,結果也為空集(根據集合運算定律)。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N * M), N 為給定集合當中基數最小的集合, M 為給定集合的個數。
- 返回值:
- 交集成員的列表。
redis> SMEMBERS group_1 1) "LI LEI" 2) "TOM" 3) "JACK" redis> SMEMBERS group_2 1) "HAN MEIMEI" 2) "JACK" redis> SINTER group_1 group_2 1) "JACK"
6.SINTERSTORE destination key [key ...]
這個命令類似於 SINTER 命令,但它將結果保存到 destination 集合,而不是簡單地返回結果集。
如果 destination 集合已經存在,則將其覆蓋。
destination 可以是 key 本身。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N * M), N 為給定集合當中基數最小的集合, M 為給定集合的個數。
- 返回值:
- 結果集中的成員數量。
7.SISMEMBER key member
判斷 member 元素是否集合 key 的成員。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(1)
- 返回值:
-
如果 member 元素是集合的成員,返回 1 。如果 member 元素不是集合的成員,或 key 不存在,返回 0 。
redis> SMEMBERS joe's_movies 1) "hi, lady" 2) "Fast Five" 3) "2012" redis> SISMEMBER joe's_movies "bet man" (integer) 0 redis> SISMEMBER joe's_movies "Fast Five" (integer) 1
8.SMEMBERS key
返回集合 key 中的所有成員。
不存在的 key 被視為空集合。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N), N 為集合的基數。
- 返回值:
- 集合中的所有成員。
8.SMOVE source destination member
將 member 元素從 source 集合移動到 destination 集合。
SMOVE 是原子性操作。
如果 source 集合不存在或不包含指定的 member 元素,則 SMOVE 命令不執行任何操作,僅返回 0 。否則, member 元素從 source 集合中被移除,並添加到 destination 集合中去。
當 destination 集合已經包含 member 元素時, SMOVE 命令只是簡單地將 source 集合中的 member 元素刪除。
當 source 或 destination 不是集合類型時,返回一個錯誤。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(1)
- 返回值:
-
如果 member 元素被成功移除,返回 1 。如果 member 元素不是 source 集合的成員,並且沒有任何操作對 destination 集合執行,那么返回 0 。
9.SPOP key
移除並返回集合中的一個隨機元素。
如果只想獲取一個隨機元素,但不想該元素從集合中被移除的話,可以使用 SRANDMEMBER 命令。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(1)
- 返回值:
-
被移除的隨機元素。當 key 不存在或 key 是空集時,返回 nil 。
10.SRANDMEMBER key [count]
如果命令執行時,只提供了 key 參數,那么返回集合中的一個隨機元素。
從 Redis 2.6 版本開始, SRANDMEMBER 命令接受可選的 count 參數:
- 如果 count 為正數,且小於集合基數,那么命令返回一個包含 count 個元素的數組,數組中的元素各不相同。如果 count 大於等於集合基數,那么返回整個集合。
- 如果 count 為負數,那么命令返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為 count 的絕對值。
該操作和 SPOP 相似,但 SPOP 將隨機元素從集合中移除並返回,而 SRANDMEMBER 則僅僅返回隨機元素,而不對集合進行任何改動。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
-
只提供 key 參數時為 O(1) 。如果提供了 count 參數,那么為 O(N) ,N 為返回數組的元素個數。
- 返回值:
-
只提供 key 參數時,返回一個元素;如果集合為空,返回 nil 。如果提供了 count 參數,那么返回一個數組;如果集合為空,返回空數組。
-
11.SREM key member [member ...]
移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略。
當 key 不是集合類型,返回一個錯誤。
在 Redis 2.4 版本以前, SREM 只接受單個 member 值。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N), N 為給定 member 元素的數量。
- 返回值:
- 被成功移除的元素的數量,不包括被忽略的元素。
12.SUNION key [key ...]
返回一個集合的全部成員,該集合是所有給定集合的並集。
不存在的 key 被視為空集。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N), N 是所有給定集合的成員數量之和。
- 返回值:
- 並集成員的列表。
13.SUNIONSTORE destination key [key ...]
這個命令類似於 SUNION 命令,但它將結果保存到 destination 集合,而不是簡單地返回結果集。
如果 destination 已經存在,則將其覆蓋。
destination 可以是 key 本身。
- 可用版本:
- >= 1.0.0
- 時間復雜度:
- O(N), N 是所有給定集合的成員數量之和。
- 返回值:
- 結果集中的元素數量。