Redis集合

  • 集合類型 Set 是一個(gè)無(wú)序并唯一的鍵值集合。
  • 它的存儲(chǔ)順序不會(huì)按照插入的先后順序進(jìn)行存儲(chǔ)。

同列表的區(qū)別

  • 列表可以存儲(chǔ)重復(fù)元素,集合只能存儲(chǔ)非重復(fù)元素;
  • 列表是按照元素的先后順序存儲(chǔ)元素的,而集合則是無(wú)序方式存儲(chǔ)元素的;

redis-cli使用

  • 添加一個(gè)或多個(gè)元素/查詢集合所有元素
127.0.0.1:6379> sadd like Anna Bob Bob Cat
(integer) 3
127.0.0.1:6379> smembers like
1) "Anna"
2) "Bob"
3) "Cat"
  • 查詢集合元素?cái)?shù)量
127.0.0.1:6379> scard like
(integer) 3
  • 查詢集合中是否包含某元素
127.0.0.1:6379> sismember like Anna
(integer) 1
127.0.0.1:6379> sismember like John
(integer) 0
  • 從一個(gè)集合中移動(dòng)一個(gè)元素到另一個(gè)集合
127.0.0.1:6379> smembers like
1) "Anna"
2) "Bob"
3) "Cat"
127.0.0.1:6379> smembers dislike
1) "Lee"
2) "Mary"
3) "Sasike"
127.0.0.1:6379> smove like dislike Cat
(integer) 1
127.0.0.1:6379> smembers like
1) "Anna"
2) "Bob"
127.0.0.1:6379> smembers dislike
1) "Lee"
2) "Mary"
3) "Cat"
4) "Sasike"
  • 移除集合中一個(gè)或者多個(gè)元素, 不存在的元素將會(huì)被忽略
127.0.0.1:6379> smembers dislike
1) "Lee"
2) "Mary"
3) "Cat"
4) "Sasike"
127.0.0.1:6379> srem dislike Lee Cat
(integer) 2
127.0.0.1:6379> smembers dislike
1) "Mary"
2) "Sasike"

使用Jedis操作Set

public class RedisSet {
    public static void main(String[] args) {
        Jedis redis = ConnectRedis.getRedis();
        Set<String> dislike = redis.smembers("dislike");
        System.out.println(dislike);
        redis.sadd("dislike","Hinata","Sakura","Gala");
        dislike=redis.smembers("dislike");
        System.out.println(dislike);
    }
}

集合實(shí)現(xiàn)

  • 當(dāng)所有元素都為整數(shù)時(shí),集合會(huì)以 intset 結(jié)構(gòu)進(jìn)行(數(shù)據(jù))存儲(chǔ);
  • 當(dāng)元素為非整數(shù)時(shí),集合會(huì)使用 hashtable 進(jìn)行存儲(chǔ);

使用場(chǎng)景

  • 微博關(guān)注我的人和我關(guān)注的人都適合用集合存儲(chǔ),可以保證人員不會(huì)重復(fù);
  • 中獎(jiǎng)人信息也適合用集合類型存儲(chǔ),這樣可以保證一個(gè)人不會(huì)重復(fù)中獎(jiǎng);

更多操作命令

  • 移除并返回集合中的一個(gè)隨機(jī)元素
127.0.0.1:6379> smembers dislike
1) "Sakura"
2) "Mary"
3) "Hinata"
4) "Sasike"
5) "Gala"
127.0.0.1:6379> spop dislike 1
1) "Sakura"
127.0.0.1:6379> spop dislike 1
1) "Hinata"
127.0.0.1:6379> smembers dislike
1) "Gala"
2) "Mary"
3) "Sasike"
  • 隨機(jī)返回集合中指定數(shù)量的元素列表
127.0.0.1:6379> smembers dislike
1) "Gala"
2) "Mary"
3) "Sasike"
127.0.0.1:6379> srandmember dislike 2
1) "Mary"
2) "Gala"
  • 返回一個(gè)集合或多個(gè)集合的交集
127.0.0.1:6379> sadd set1 a b c d e 
(integer) 5
127.0.0.1:6379> sadd set2 a b f g h
(integer) 5
127.0.0.1:6379> sinter set1 set2
1) "a"
2) "b"
  • 把集合的交集復(fù)制到新的集合中
127.0.0.1:6379> sadd set1 a b c d e 
(integer) 5
127.0.0.1:6379> sadd set2 a b f g h
(integer) 5
127.0.0.1:6379> sinterstore set3 set1 set2
(integer) 2
127.0.0.1:6379> smembers set3
1) "a"
2) "b"
  • 查詢一個(gè)或者多個(gè)集合的并集
127.0.0.1:6379> sunion set1 set2
1) "b"
2) "h"
3) "g"
4) "f"
5) "d"
6) "a"
7) "e"
8) "c"
  • 查詢一個(gè)或者多個(gè)集合的并集并存儲(chǔ)
127.0.0.1:6379> sunionstore set4 set1 set2
    (integer) 8
    127.0.0.1:6379> smembers set4
    1) "b"
    2) "h"
    3) "g"
    4) "f"
    5) "d"
    6) "a"
    7) "e"
    8) "c"
  • 查詢一個(gè)或者多個(gè)集合的錯(cuò)集
127.0.0.1:6379> smembers set1
1) "d"
2) "a"
3) "c"
4) "b"
5) "e"
127.0.0.1:6379> smembers set2
1) "b"
2) "h"
3) "f"
4) "g"
5) "a"
127.0.0.1:6379> sdiff set1 set2
1) "d"
2) "e"
3) "c"
  • 查詢一個(gè)或者多個(gè)集合的錯(cuò)集并存儲(chǔ)
127.0.0.1:6379> sdiffstore set5 set1 set2
(integer) 3
127.0.0.1:6379> smembers set5
1) "d"
2) "e"
3) "c"
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 集合類型 Redis集合類型中,元素是不重復(fù)的,即每個(gè)元素在集合中都是唯一的;不同于列表類型,集合的元素沒(méi)有順序,...
    李小磊_0867閱讀 892評(píng)論 0 3
  • redis集合中的每個(gè)元素都是不同的,且沒(méi)有順序,一個(gè)集合類型(set)鍵可以至多存儲(chǔ)2^32 -1個(gè)字符串。集合...
    gzss閱讀 178評(píng)論 0 2
  • 集合特點(diǎn): 不允許存在重復(fù)值 無(wú)序,不保證插入的順序 SADD key member [member …] 插入元...
    老陳的記事本閱讀 247評(píng)論 0 0
  • 集合(set)類型也是用于保存多個(gè)的字符串元素,但也列表不一樣的是,集合中不允許有重復(fù)元素,并且集合中的元素是無(wú)序...
    閑睡貓閱讀 1,333評(píng)論 0 1
  • 集合(set)類型也是用來(lái)保存多個(gè)字符串元素的,但是和列表不一樣的是,集合中不允許有重復(fù)元素,并且集合中元素是無(wú)序...
    Audience0閱讀 351評(píng)論 0 0

友情鏈接更多精彩內(nèi)容