Redis常用操作-------Set(集合)


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 是所有給定集合的成員數量之和。
返回值:
結果集中的元素數量。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM