SADD key member
將member元素加入到集合key當中。
如果member元素已經是該集合的成員,那SADD命令不執行任何操作。
假如key不存在,則創建一個只包含member元素作成員的集合。
當key不是集合類型時,返回一個錯誤。
時間複雜度:
O(1)
返回值:
如果添加元素成功,返回1。
如果元素已經是集合的成員,返回0。
- <span style="font-size: small;">redis> SADD bbs "v2ex.com"
- (integer) 1
- redis> SADD bbs "codecompo.com"
- (integer) 1
- redis> SMEMBERS bbs # 顯示bbs集合中所有成員
- 1) "codecompo.com"
- 2) "v2ex.com"
- redis> SADD bbs "v2ex.com" # 嘗試添加重複元素,返回0
- (integer) 0</span>
SINTER key [key ...]
返回一個集合的全部成員,該集合是所有給定集合的交集。
不存在的key被視爲空集。
當給定集合當中有一個空集時,結果也爲空集(根據集合運算定律)。
時間複雜度:
O(N * M),N爲給定集合當中基數最小的集合,M爲給定集合的個數。
返回值:
交集成員的列表。
- <span style="font-size: small;">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"</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> SMEMBERS songs
- 1) "Billie Jean"
- 2) "Believe Me"
- redis> SMEMBERS my_songs
- (empty list or set)
- redis> SMOVE songs my_songs "Believe Me"
- (integer) 1
- redis> SMEMBERS songs
- 1) "Billie Jean"
- redis> SMEMBERS my_songs
- 1) "Believe Me"
SUNION key [key ...]
返回一個集合的全部成員,該集合是所有給定集合的並集。
不存在的key被視爲空集。
複雜度:
O(N),N是所有給定集合的成員數量之和。
返回值:
並集成員的列表。
- redis> SMEMBERS songs
- 1) "Billie Jean"
- redis> SMEMBERS my_songs
- 1) "Believe Me"
- redis> SUNION songs my_songs
- 1) "Billie Jean"
- 2) "Believe Me"
SCARD key
返回集合的基數(集合中元素的數量)。
複雜度:
O(1)
返回值:
集合的基數。
當key不存在時,返回0。
- redis> SMEMBERS tool
- 1) "pc"
- 2) "printer"
- 3) "phone"
- redis> SCARD tool
- (integer) 3
- redis> SMEMBERS fake_set
- (empty list or set)
- redis> SCARD fake_set
- (integer) 0
SINTERSTORE destination key [key ...]
此命令等同於SINTER,但它將結果保存到destination集合,而不是簡單地返回結果集。
如果destination集合已經存在,則將其覆蓋。
時間複雜度:
O(N * M),N爲給定集合當中基數最小的集合,M爲給定集合的個數。
返回值:
結果集中的元素數量。
- redis> SMEMBERS songs
- 1) "good bye joe" # <-
- 2) "hello,peter"
- redis> SMEMBERS my_songs
- 1) "good bye joe" # <-
- 2) "falling"
- redis> SINTERSTORE song_and_my_song songs my_songs
- (integer) 1
- redis> SMEMBERS song_and_my_song
- 1) "good bye joe"
SPOP key
移除並返回集合中的一個隨機元素。
複雜度:
O(1)
返回值:
被移除的隨機元素。
當key不存在或key是空集時,返回nil。
- redis> SMEMBERS my_sites
- 1) "huangz.iteye.com"
- 2) "sideeffect.me"
- 3) "douban.com/people/i_m_huangz"
- redis> SPOP my_sites
- "huangz.iteye.com"
- redis> SMEMBERS my_sites
- 1) "sideeffect.me"
- 2) "douban.com/people/i_m_huang"
SUNIONSTORE destination key [key ...]
此命令等同於SUNION,但它將結果保存到destination集合,而不是簡單地返回結果集。
如果destination已經存在,則將其覆蓋。
複雜度:
O(N),N是所有給定集合的成員數量之和。
返回值:
結果集中的元素數量。
- redis> SMEMBERS ms_sites
- 1) "microsoft.com"
- 2) "skype.com"
- redis> SMEMBERS google_sites
- 1) "youtube.com"
- 2) "google.com"
- redis> SUNIONSTORE google_and_ms_sites ms_sites google_sites
- (integer) 4
- redis> SMEMBERS google_and_ms_sites
- 1) "microsoft.com"
- 2) "skype.com"
- 3) "google.com"
- 4) "youtube.com"
SDIFF key [key ...]
返回一個集合的全部成員,該集合是第一個給定集合和其他所有給定集合的差集 。
不存在的key被視爲空集。
複雜度:
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"
SISMEMBER key member
判斷member元素是否是集合的成員。
時間複雜度:
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
SRANDMEMBER key
返回集合中的一個隨機元素。
該操作和SPOP相似,但SPOP將隨機元素從集合中移除並返回,而SRANDMEMBER則僅僅返回隨機元素,而不對集合進行任何改動。
時間複雜度:
O(1)
返回值:
被選中的隨機元素。 當key不存在或key是空集時,返回nil。
- redis> SMEMBERS joe's_movies
- 1) "hi, lady"
- 2) "Fast Five"
- 3) "2012"
- redis> SRANDMEMBER joe's_movies
- "Fast Five"
- redis> SMEMBERS joe's_movies # 集合中的元素不變
- 1) "hi, lady"
- 2) "Fast Five"
- 3) "2012"
SDIFFSTORE destination key [key ...]
此命令等同於SDIFF,但它將結果保存到destination集合,而不是簡單地返回結果集。
如果destination集合已經存在,則將其覆蓋。
複雜度:
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"
SMEMBERS key
返回集合中的所有成員。
時間複雜度:
O(N),N爲集合的基數。
返回值:
集合中的所有成員。
- redis> SMEMBERS prog_lang
- 1) "c"
- 2) "ruby"
- 3) "python"
SREM key member
移除集合中的member元素。
如果member元素不是集合中的成員,則SREM命令不執行任何操作。
當key不是集合類型,返回一個錯誤。
時間複雜度:
O(1)
返回值:
如果移除元素成功,返回1。
如果member元素不是集合成員,返回0。
- redis> SMEMBERS prog_lang
- 1) "c"
- 2) "ruby"
- 3) "python"
- redis> SREM prog_lang "c"
- (integer) 1
- redis> SMEMBERS prog_lang
- 1) "ruby"
- 2) "python"
- redis> SREM prog_lang "scheme"
- (integer) 0
- redis> SMEMBERS prog_lang
- 1) "ruby"
- 2) "python"