redis 集合操作
2019獨角獸企業重金招聘Python工程師標準>>>
SADD key member
將member元素加入到集合key當中。
如果member元素已經是該集合的成員,那SADD命令不執行任何操作。
假如key不存在,則創建一個只包含member元素作成員的集合。
當key不是集合類型時,返回一個錯誤。
時間復雜度:
? ? O(1)
返回值:
? ? 如果添加元素成功,返回1。
? ? 如果元素已經是集合的成員,返回0。
?
Redis代碼??
<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為給定集合的個數。
返回值:
? ? 交集成員的列表。
?
Redis代碼??
<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代碼??
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代碼??
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代碼??
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代碼??
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代碼??
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代碼??
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代碼??
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代碼??
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代碼??
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代碼??
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代碼??
redis>?SMEMBERS?prog_lang??
1)?"c"??
2)?"ruby"??
3)?"python"??
?
?
SREM key member
?
移除集合中的member元素。
?
如果member元素不是集合中的成員,則SREM命令不執行任何操作。
當key不是集合類型,返回一個錯誤。
時間復雜度:
? ? O(1)
返回值:
? ? 如果移除元素成功,返回1。
? ? 如果member元素不是集合成員,返回0。
?
?
Redis代碼??
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"??
? ?
轉載于:https://my.oschina.net/goudingcheng/blog/652348
總結
以上是生活随笔為你收集整理的redis 集合操作的全部內容,希望文章能夠幫你解決所遇到的問題。