Redis基本數(shù)據(jù)類型Set常用操作命令
Redis基本數(shù)據(jù)類型Set常用操作
Set是String類型的無序集合。集合成員是唯一的,這就意味著集合中不能出現(xiàn)重復(fù)的數(shù)據(jù)。
另外,redis中的set是通過哈希表實(shí)現(xiàn)的,所以添加,刪除,查找的復(fù)雜度都是 O(1)。
一、sadd 添加一個(gè)、多個(gè)元素
將一個(gè)或多個(gè)成員元素加入到集合中,已經(jīng)存在于集合的成員元素將被忽略。
若key不存在,則創(chuàng)建一個(gè)只包含添加的元素作成員的集合。
sadd myset hello pingguo test
若key不是集合類型時(shí),返回一個(gè)錯(cuò)誤。
二、smembers 查看集合
返回集合中的所有的成員。
smembers myset
三、scard 元素?cái)?shù)量
返回集合中元素的數(shù)量。
scard myset
四、srem 移除一個(gè)、多個(gè)元素
用于移除集合中的一個(gè)或多個(gè)成員元素,不存在的成員元素會(huì)被忽略。
當(dāng)key不是集合類型,返回一個(gè)錯(cuò)誤。
srem myset hello test
五、srandmember 隨機(jī)元素
用于返回集合中的一個(gè)隨機(jī)元素。
srandmember myset 3
這里隨機(jī)抽取3個(gè)元素,注意這里僅僅返回隨機(jī)元素,而不對(duì)集合進(jìn)行任何改動(dòng)。
六、spop 隨機(jī)移除一個(gè)、多個(gè)元素
移除集合中的指定key的一個(gè)或多個(gè)隨機(jī)元素,移除后會(huì)返回移除的元素。
spop myset 2
跟上面的srandmember
區(qū)別開,雖然都是隨機(jī),但是這里的spop
修改了集合。
七、smove 移動(dòng)元素到目標(biāo)集合
smove source destination member將指定成員 member 元素從 source 集合移動(dòng)到 destination 集合。
smove myset myset2 pingguo
如果原集合不存在或不包含指定的元素,則不執(zhí)行任何操作,僅返回 0。否則,移動(dòng)成功。
如果目標(biāo)集合里已經(jīng)存在了此元素,那么命令只會(huì)移除原集合里的元素。
八、sdiff 差集
返回第一個(gè)集合與其他集合之間的差異,也可以說是第一個(gè)集合中獨(dú)有的元素。
sdiff myset myset2 myset3
注意,這里差集的結(jié)果來自前面的myset
。
九、sinter 交集
返回給定所有給定集合的交集,當(dāng)給定集合當(dāng)中有一個(gè)空集時(shí),結(jié)果也為空集。
sinter myset myset2 myset3sinter myset myset3
這里當(dāng)比較3個(gè)集合myset myset2 myset3
時(shí),myset2
里跟其他2個(gè)沒有任何交集,所以整個(gè)結(jié)果返回空集。
十、sunion 并集
返回給定集合的并集,不存在的集合 key 被視為空集。
sunion myset myset2 myset3
集合利用差、并、交集可以用來實(shí)現(xiàn)一些場(chǎng)景的功能。比如社交軟件中,把A用戶關(guān)注的所有人放到一個(gè)set里,然后將B用戶的粉絲放另一個(gè)set2里。
那么A, B兩個(gè)用戶共同關(guān)注的人就是交集了。
以上就是Redis基本數(shù)據(jù)類型Set常用操作的詳細(xì)內(nèi)容,更多關(guān)于Redis數(shù)據(jù)類型Set操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
基于Redis的分布式鎖的簡(jiǎn)單實(shí)現(xiàn)方法
這篇文章主要介紹了基于Redis的分布式鎖的簡(jiǎn)單實(shí)現(xiàn)方法,Redis官方給出兩種思路,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10如何利用 Redis 實(shí)現(xiàn)接口頻次限制
這篇文章主要介紹了如何利用 Redis 實(shí)現(xiàn)接口頻次限制,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02如何操作Redis和zookeeper實(shí)現(xiàn)分布式鎖
這篇文章主要介紹了如何操作Redis和zookeeper實(shí)現(xiàn)分布式鎖的相關(guān)資料,需要的朋友可以參考下2017-07-07查看redis占用內(nèi)存的實(shí)現(xiàn)方法
這篇文章主要介紹了查看redis占用內(nèi)存的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01redis哨兵模式分布式鎖實(shí)現(xiàn)與實(shí)踐方式(redisson)
這篇文章主要介紹了redis哨兵模式分布式鎖實(shí)現(xiàn)與實(shí)踐方式(redisson),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03解析redis hash應(yīng)用場(chǎng)景和常用命令
這篇文章主要介紹了redis hash應(yīng)用場(chǎng)景和常用命令,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08Redis中ServiceStack.Redis和StackExchange.Redis區(qū)別詳解
本文主要介紹了Redis中ServiceStack.Redis和StackExchange.Redis區(qū)別詳解,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-05-05redis集群主從節(jié)點(diǎn)自動(dòng)切換方式
這篇文章主要介紹了redis集群主從節(jié)點(diǎn)自動(dòng)切換方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01