redis 集合操作

SADD key member


將member元素加入到集合key當中。


如果member元素已經是該集合的成員,那SADD命令不執行任何操作。

假如key不存在,則創建一個只包含member元素作成員的集合。

當key不是集合類型時,返回一個錯誤。


時間複雜度:

    O(1)

返回值:

    如果添加元素成功,返回1。

    如果元素已經是集合的成員,返回0。


 

Redis代碼  收藏代碼
  1. <span style="font-size: small;">redis> SADD bbs "v2ex.com"  
  2. (integer) 1  
  3. redis> SADD bbs "codecompo.com"  
  4. (integer) 1  
  5.   
  6. redis> SMEMBERS bbs     # 顯示bbs集合中所有成員  
  7. 1"codecompo.com"  
  8. 2"v2ex.com"  
  9.   
  10. redis> SADD bbs "v2ex.com"  # 嘗試添加重複元素,返回0  
  11. (integer) 0</span>  

 




SINTER key [key ...]


返回一個集合的全部成員,該集合是所有給定集合的交集。


不存在的key被視爲空集。

當給定集合當中有一個空集時,結果也爲空集(根據集合運算定律)。


時間複雜度:

    O(N * M),N爲給定集合當中基數最小的集合,M爲給定集合的個數。

返回值:

    交集成員的列表。


 

Redis代碼  收藏代碼
  1. <span style="font-size: small;">redis> SMEMBERS group_1  
  2. 1"LI LEI"  
  3. 2"TOM"  
  4. 3"JACK"   # <-  
  5.   
  6. redis> SMEMBERS group_2  
  7. 1"HAN MEIMEI"  
  8. 2"JACK"   # <-  
  9.   
  10. redis> SINTER group_1 group_2  
  11. 1"JACK"</span>  

 

 

 


SMOVE source destination member

 

將member元素從source集合移動到destination集合。

 

SMOVE是原子性操作。

如果source集合不存在或不包含指定的member元素,則SMOVE命令不執行任何操作,僅返回0。否則,member元素從source集合中被移除,並添加到destination集合中去。

當destination集合已經包含member元素時,SMOVE命令只是簡單地將source集合中的member元素刪除。

當source或destination不是集合類型時,返回一個錯誤。

 

複雜度:

    O(1)

返回值:

    如果member元素被成功移除,返回1。

    如果member元素不是source集合的成員,並且沒有任何操作對destination集合執行,那麼返回0。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS songs  
  2. 1"Billie Jean"  
  3. 2"Believe Me"  
  4.   
  5. redis> SMEMBERS my_songs  
  6. (empty list or set)  
  7.   
  8. redis> SMOVE songs my_songs "Believe Me"  
  9. (integer) 1  
  10.   
  11. redis> SMEMBERS songs  
  12. 1"Billie Jean"  
  13.   
  14. redis> SMEMBERS my_songs  
  15. 1"Believe Me"  

 

 


SUNION key [key ...]

 

返回一個集合的全部成員,該集合是所有給定集合的並集。

 

不存在的key被視爲空集。

 

複雜度:

    O(N),N是所有給定集合的成員數量之和。

返回值:

    並集成員的列表。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS songs  
  2. 1"Billie Jean"  
  3.   
  4. redis> SMEMBERS my_songs  
  5. 1"Believe Me"  
  6.   
  7. redis> SUNION songs my_songs  
  8. 1"Billie Jean"  
  9. 2"Believe Me"  
 

 


SCARD key

 

返回集合的基數(集合中元素的數量)。

 

複雜度:

    O(1)

返回值:

    集合的基數。

    當key不存在時,返回0。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS tool  
  2. 1"pc"  
  3. 2"printer"  
  4. 3"phone"  
  5.   
  6. redis> SCARD tool  
  7. (integer) 3  
  8.   
  9. redis> SMEMBERS fake_set  
  10. (empty list or set)  
  11.   
  12. redis> SCARD fake_set  
  13. (integer) 0  

 

 


SINTERSTORE destination key [key ...]

 

此命令等同於SINTER,但它將結果保存到destination集合,而不是簡單地返回結果集。

 

如果destination集合已經存在,則將其覆蓋。

 

時間複雜度:

    O(N * M),N爲給定集合當中基數最小的集合,M爲給定集合的個數。

返回值:

    結果集中的元素數量。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS songs  
  2. 1"good bye joe"   # <-  
  3. 2"hello,peter"  
  4.   
  5. redis> SMEMBERS my_songs  
  6. 1"good bye joe"   # <-  
  7. 2"falling"  
  8.   
  9. redis> SINTERSTORE song_and_my_song songs my_songs  
  10. (integer) 1  
  11.   
  12. redis> SMEMBERS song_and_my_song  
  13. 1"good bye joe"  

 

 


SPOP key

 

移除並返回集合中的一個隨機元素。

 

複雜度:

    O(1)

返回值:

    被移除的隨機元素。

    當key不存在或key是空集時,返回nil。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS my_sites  
  2. 1"huangz.iteye.com"  
  3. 2"sideeffect.me"  
  4. 3"douban.com/people/i_m_huangz"  
  5.   
  6. redis> SPOP my_sites  
  7. "huangz.iteye.com"  
  8.   
  9. redis> SMEMBERS my_sites  
  10. 1"sideeffect.me"  
  11. 2"douban.com/people/i_m_huang"  

 

 


SUNIONSTORE destination key [key ...]

 

此命令等同於SUNION,但它將結果保存到destination集合,而不是簡單地返回結果集。

 

如果destination已經存在,則將其覆蓋。

 

複雜度:

    O(N),N是所有給定集合的成員數量之和。

返回值:

    結果集中的元素數量。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS ms_sites  
  2. 1"microsoft.com"  
  3. 2"skype.com"  
  4.   
  5. redis> SMEMBERS google_sites  
  6. 1"youtube.com"  
  7. 2"google.com"  
  8.   
  9. redis> SUNIONSTORE google_and_ms_sites ms_sites google_sites  
  10. (integer) 4  
  11.   
  12. redis> SMEMBERS google_and_ms_sites  
  13. 1"microsoft.com"  
  14. 2"skype.com"  
  15. 3"google.com"  
  16. 4"youtube.com"  
 

 


SDIFF key [key ...]

 

返回一個集合的全部成員,該集合是第一個給定集合和其他所有給定集合的差集 。

 

不存在的key被視爲空集。

 

複雜度:

    O(N),N是所有給定集合的成員數量之和。

返回值:

    交集成員的列表。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS peter's_movies  
  2. 1"bet man"  
  3. 2"start war"  
  4. 3"2012"   # <-  
  5.   
  6. redis> SMEMBERS joe's_movies  
  7. 1"hi, lady"  
  8. 2"Fast Five"  
  9. 3"2012"   # <-  
  10.   
  11. redis> SDIFF peter's_movies joe's_movies  
  12. 1"bet man"  
  13. 2"start war"  

 

 


SISMEMBER key member

 

判斷member元素是否是集合的成員。

 

時間複雜度:

    O(1)

返回值:

    如果member元素是集合的成員,返回1。

    如果member元素不是集合的成員,或key不存在,返回0。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS joe's_movies  
  2. 1"hi, lady"  
  3. 2"Fast Five"  
  4. 3"2012"  
  5.   
  6. redis> SISMEMBER joe's_movies "bet man"  
  7. (integer) 0  
  8.   
  9. redis> SISMEMBER joe's_movies "Fast Five"  
  10. (integer) 1  

 

 


SRANDMEMBER key

 

返回集合中的一個隨機元素。

 

該操作和SPOP相似,但SPOP將隨機元素從集合中移除並返回,而SRANDMEMBER則僅僅返回隨機元素,而不對集合進行任何改動。

 

時間複雜度:

    O(1)

返回值:

    被選中的隨機元素。 當key不存在或key是空集時,返回nil。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS joe's_movies  
  2. 1"hi, lady"  
  3. 2"Fast Five"  
  4. 3"2012"  
  5.   
  6. redis> SRANDMEMBER joe's_movies  
  7. "Fast Five"  
  8.   
  9. redis> SMEMBERS joe's_movies    # 集合中的元素不變  
  10. 1"hi, lady"  
  11. 2"Fast Five"  
  12. 3"2012"  
 

 


SDIFFSTORE destination key [key ...]

 

此命令等同於SDIFF,但它將結果保存到destination集合,而不是簡單地返回結果集。

 

如果destination集合已經存在,則將其覆蓋。

 

複雜度:

    O(N),N是所有給定集合的成員數量之和。

返回值:

    結果集中的元素數量。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS joe's_movies  
  2. 1"hi, lady"  
  3. 2"Fast Five"  
  4. 3"2012"  
  5.   
  6. redis> SMEMBERS peter's_movies  
  7. 1"bet man"  
  8. 2"start war"  
  9. 3"2012"  
  10.   
  11. redis> SDIFFSTORE joe_diff_peter joe's_movies peter's_movies  
  12. (integer) 2  
  13.   
  14. redis> SMEMBERS joe_diff_peter  
  15. 1"hi, lady"  
  16. 2"Fast Five"  

 

 

 

SMEMBERS key

 

返回集合中的所有成員。

 

時間複雜度:

    O(N),N爲集合的基數。

返回值:

    集合中的所有成員。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS prog_lang  
  2. 1"c"  
  3. 2"ruby"  
  4. 3"python"  

 

 


SREM key member

 

移除集合中的member元素。

 

如果member元素不是集合中的成員,則SREM命令不執行任何操作。

當key不是集合類型,返回一個錯誤。

時間複雜度:

    O(1)

返回值:

    如果移除元素成功,返回1。

    如果member元素不是集合成員,返回0。

 

 

Redis代碼  收藏代碼
  1. redis> SMEMBERS prog_lang  
  2. 1"c"  
  3. 2"ruby"  
  4. 3"python"  
  5.   
  6. redis> SREM prog_lang "c"  
  7. (integer) 1  
  8.   
  9. redis> SMEMBERS prog_lang  
  10. 1"ruby"  
  11. 2"python"  
  12.   
  13. redis> SREM prog_lang "scheme"  
  14. (integer) 0  
  15.   
  16. redis> SMEMBERS prog_lang  
  17. 1"ruby"  
  18. 2"python"  
 
發佈了56 篇原創文章 · 獲贊 7 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章