redis 集合操作
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
SADD key member
將member元素加入到集合key當(dāng)中。
如果member元素已經(jīng)是該集合的成員,那SADD命令不執(zhí)行任何操作。
假如key不存在,則創(chuàng)建一個(gè)只包含member元素作成員的集合。
當(dāng)key不是集合類(lèi)型時(shí),返回一個(gè)錯(cuò)誤。
時(shí)間復(fù)雜度:
? ? O(1)
返回值:
? ? 如果添加元素成功,返回1。
? ? 如果元素已經(jīng)是集合的成員,返回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"??#?嘗試添加重復(fù)元素,返回0??
(integer)?0</span>??
?
SINTER key [key ...]
返回一個(gè)集合的全部成員,該集合是所有給定集合的交集。
不存在的key被視為空集。
當(dāng)給定集合當(dāng)中有一個(gè)空集時(shí),結(jié)果也為空集(根據(jù)集合運(yùn)算定律)。
時(shí)間復(fù)雜度:
? ? O(N * M),N為給定集合當(dāng)中基數(shù)最小的集合,M為給定集合的個(gè)數(shù)。
返回值:
? ? 交集成員的列表。
?
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集合移動(dòng)到destination集合。
?
SMOVE是原子性操作。
如果source集合不存在或不包含指定的member元素,則SMOVE命令不執(zhí)行任何操作,僅返回0。否則,member元素從source集合中被移除,并添加到destination集合中去。
當(dāng)destination集合已經(jīng)包含member元素時(shí),SMOVE命令只是簡(jiǎn)單地將source集合中的member元素刪除。
當(dāng)source或destination不是集合類(lèi)型時(shí),返回一個(gè)錯(cuò)誤。
?
復(fù)雜度:
? ? O(1)
返回值:
? ? 如果member元素被成功移除,返回1。
? ? 如果member元素不是source集合的成員,并且沒(méi)有任何操作對(duì)destination集合執(zhí)行,那么返回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 ...]
?
返回一個(gè)集合的全部成員,該集合是所有給定集合的并集。
?
不存在的key被視為空集。
?
復(fù)雜度:
? ? O(N),N是所有給定集合的成員數(shù)量之和。
返回值:
? ? 并集成員的列表。
?
?
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
?
返回集合的基數(shù)(集合中元素的數(shù)量)。
?
復(fù)雜度:
? ? O(1)
返回值:
? ? 集合的基數(shù)。
? ? 當(dāng)key不存在時(shí),返回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,但它將結(jié)果保存到destination集合,而不是簡(jiǎn)單地返回結(jié)果集。
?
如果destination集合已經(jīng)存在,則將其覆蓋。
?
時(shí)間復(fù)雜度:
? ? O(N * M),N為給定集合當(dāng)中基數(shù)最小的集合,M為給定集合的個(gè)數(shù)。
返回值:
? ? 結(jié)果集中的元素?cái)?shù)量。
?
?
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
?
移除并返回集合中的一個(gè)隨機(jī)元素。
?
復(fù)雜度:
? ? O(1)
返回值:
? ? 被移除的隨機(jī)元素。
? ? 當(dāng)key不存在或key是空集時(shí),返回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,但它將結(jié)果保存到destination集合,而不是簡(jiǎn)單地返回結(jié)果集。
?
如果destination已經(jīng)存在,則將其覆蓋。
?
復(fù)雜度:
? ? O(N),N是所有給定集合的成員數(shù)量之和。
返回值:
? ? 結(jié)果集中的元素?cái)?shù)量。
?
?
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 ...]
?
返回一個(gè)集合的全部成員,該集合是第一個(gè)給定集合和其他所有給定集合的差集 。
?
不存在的key被視為空集。
?
復(fù)雜度:
? ? O(N),N是所有給定集合的成員數(shù)量之和。
返回值:
? ? 交集成員的列表。
?
?
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元素是否是集合的成員。
?
時(shí)間復(fù)雜度:
? ? 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
?
返回集合中的一個(gè)隨機(jī)元素。
?
該操作和SPOP相似,但SPOP將隨機(jī)元素從集合中移除并返回,而SRANDMEMBER則僅僅返回隨機(jī)元素,而不對(duì)集合進(jìn)行任何改動(dòng)。
?
時(shí)間復(fù)雜度:
? ? O(1)
返回值:
? ? 被選中的隨機(jī)元素。 當(dāng)key不存在或key是空集時(shí),返回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,但它將結(jié)果保存到destination集合,而不是簡(jiǎn)單地返回結(jié)果集。
?
如果destination集合已經(jīng)存在,則將其覆蓋。
?
復(fù)雜度:
? ? O(N),N是所有給定集合的成員數(shù)量之和。
返回值:
? ? 結(jié)果集中的元素?cái)?shù)量。
?
?
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
?
返回集合中的所有成員。
?
時(shí)間復(fù)雜度:
? ? O(N),N為集合的基數(shù)。
返回值:
? ? 集合中的所有成員。
?
?
Redis代碼??
redis>?SMEMBERS?prog_lang??
1)?"c"??
2)?"ruby"??
3)?"python"??
?
?
SREM key member
?
移除集合中的member元素。
?
如果member元素不是集合中的成員,則SREM命令不執(zhí)行任何操作。
當(dāng)key不是集合類(lèi)型,返回一個(gè)錯(cuò)誤。
時(shí)間復(fù)雜度:
? ? 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"??
? ?
轉(zhuǎn)載于:https://my.oschina.net/goudingcheng/blog/652348
總結(jié)
以上是生活随笔為你收集整理的redis 集合操作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。