在本文典予,我將對(duì)Redis中的集合類(lèi)型進(jìn)行說(shuō)明瘤袖,包含都支持什么操作以及一些需要注意的地方捂敌。
集合本身就有一些操作,如插入占婉,刪除等逆济,但是集合之間還是有所關(guān)系的磺箕,集合之間的運(yùn)算按理說(shuō)也應(yīng)該被提供奖慌,因?yàn)楫吘辜线\(yùn)算還是很普遍的。
首先我們看看整體上都有哪些命令松靡。
序號(hào) 命令及描述
1 SADD key member1 [member2]向集合添加一個(gè)或多個(gè)成員
2 SCARD key獲取集合的成員數(shù)
3 SDIFF key1 [key2]返回給定所有集合的差集
4 SDIFFSTORE destination key1 [key2]返回給定所有集合的差集并存儲(chǔ)在 destination 中
5 SINTER key1 [key2]返回給定所有集合的交集
6 SINTERSTORE destination key1 [key2]返回給定所有集合的交集并存儲(chǔ)在 destination 中
7 SISMEMBER key member判斷 member 元素是否是集合 key 的成員
8 SMEMBERS key返回集合中的所有成員
9 SMOVE source destination member將 member 元素從 source 集合移動(dòng)到 destination 集合
10 SPOP key移除并返回集合中的一個(gè)隨機(jī)元素
11 SRANDMEMBER key [count]返回集合中一個(gè)或多個(gè)隨機(jī)數(shù)
12 SREM key member1 [member2]移除集合中一個(gè)或多個(gè)成員
13 SUNION key1 [key2]返回所有給定集合的并集
14 SUNIONSTORE destination key1 [key2]所有給定集合的并集存儲(chǔ)在 destination 集合中
15 SSCAN key cursor [MATCH pattern] [COUNT count]迭代集合中的元素
在對(duì)整體命令有簡(jiǎn)單直觀的了解后简僧,我們來(lái)對(duì)這些命令進(jìn)行分類(lèi)歸納,便于我們記憶雕欺。我們分為兩大類(lèi)岛马,第一類(lèi)是集合本身的操作,第二類(lèi)是集合之間的操作阅茶。
第一大類(lèi):集合本身的操作
在上面的截圖中我們對(duì)集合相關(guān)的操作都進(jìn)行了簡(jiǎn)單操作,其中SADD和SREM分別用于往集合中添加和刪除元素(在2.4版本以前谅海,這兩個(gè)命令只支持一次插入或刪除一個(gè)元素)脸哀,SMEMBERS用于查看返回結(jié)合中的所有元素,SISMEMBER用于判斷某個(gè)元素是否在集合中扭吁,而SCARD用于返回集合中現(xiàn)有多少元素撞蜂。此外,SPOP用于從當(dāng)前集合中隨機(jī)返回一個(gè)元素,但是SRANDMEMBER命令隨機(jī)返回一個(gè)或多個(gè)元素但并不在集合中移除該這些元素颁湖。如下所示:
至此抢蚀,關(guān)于集合本身的操作命令大致我已經(jīng)描述完了皿曲,下面看看集合之間的操作都有哪些吧妈倔。
第二大類(lèi):集合之間的操作
從我們學(xué)的數(shù)據(jù)就可以知道毅哗,關(guān)于集合的操作無(wú)非有三種虑绵,交集黑竞、并集和補(bǔ)集扎酷,下面我們分別來(lái)看看都是什么情況。
除了上面的三個(gè)指令SINTER凡纳、SUNION和SDIFF用于集合的三種操作外,還有三個(gè)命令也是完成相同的作用丛版,只不過(guò)這三個(gè)命令是將操作后的結(jié)果保存到一個(gè)目標(biāo)集合中,命令的命名上也是在原命令的基礎(chǔ)上加上了“STORE”用于標(biāo)識(shí)操作后的結(jié)果是需要保存的豫缨,這些命令分別為SINTERSTORE、SUNIONSTORE和SDIFFSTORE。
最后我還需要講一個(gè)命令邻薯,那就是SSCAN,用于遍歷集合中的元素并返回符合條件的元素灵嫌。如下所示:
從操作中,我們查詢(xún)集合中以a或者b字母開(kāi)頭的所有元素并返回。
至此霞幅,關(guān)于集合的操作命令已經(jīng)全部講解完了绍傲,下一篇將對(duì)有序集合數(shù)據(jù)類(lèi)型進(jìn)行簡(jiǎn)單的說(shuō)明猎塞,謝謝。
著作權(quán)歸作者所有铝量。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)务蝠,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處轩拨」蛔互聯(lián)網(wǎng)+時(shí)代元咙,時(shí)刻要保持學(xué)習(xí),攜手千鋒PHP,Dream It Possible。