Redis数据类型-Set

向右看齐 2023-09-27 23:53 94阅读 0赞

46f7ce44187947ac8292d160970f8298.jpeg

一. 概述
首先我们来看看Redis中的Set类型有什么特点。
与List相比,Set集合中的元素不允许重复,一个集合中最多可以对应2^32-1(4294967295)个元素。

f5acf03d2bac79ab0e57e37075127032.png

Set除了可以执行增删改查的命令之外,还支持交集、并集、差集等的计算。
二. 基本命令
对我们来说,常用的Set命令有如下几种。

22b4d7c8424f3c238a64b36858bc6b2e.png

文章底部扫码,免费领取Redis资料大礼包!

  1. 插入操作

#插入: sadd key value1 value2 …..
192.168.65.15:6379> sadd student aa bb cc
#返回新增成功value的个数
(integer) 3

#第二次插入,由于存在重复元素,所以不成功
192.168.65.15:6379> sadd student aa bb cc
(integer) 0

  1. 查询操作
    #查询所有: smembers key
    192.168.65.15:6379> smembers student

  2. “aa”

  3. “cc”
  4. “bb”

#查询元素是否存在: sismember key value
192.168.65.15:6379> sismember student aa
#如果存在返回1
(integer) 1
#如果不存在返回0
192.168.65.15:6379> sismember student dd
(integer) 0

#随机返回count个元素: srandmember key count
192.168.65.15:6379> srandmember student 2

  1. “aa”
  2. “cc”

#返回集合元素的个数:scard key
192.168.65.15:6379> scard student
(integer) 3

  1. 删除操作
    #删除元素,返回删除的个数:srem key value…
    192.168.65.15:6379> srem student aa
    (integer) 1
    #查看一下,果然已删除
    192.168.65.15:6379> smembers student

  2. “cc”

  3. “bb”

#随机删除元素并返回删除的元素
192.168.65.15:6379> spop student 1

  1. “cc”

#查看一下,果然已删除
192.168.65.15:6379> smembers student

  1. “bb”
    三. 交集、并集、差集
    除了以上几种基本的操作之外,我们还可以计算集合的交集、并集、差集。

  2. 计算交集

    e2572f19a220e0c9b0b22dbac3b39ee3.png

文章底部扫码,免费领取Redis资料大礼包!

#新增学生数据:张三 20岁 男
192.168.65.15:6379> sadd student1 zs 20 boy
(integer) 3

#新增学生数据:李四 22岁 男
192.168.65.15:6379> sadd student2 ls 22 boy
(integer) 3

#求这两条数据的交集:boy
192.168.65.15:6379> sinter student1 student2

  1. “boy”

  2. 计算并集

    3ffd34160957d0c38f0e783455a3fb03.png

#集合合并,并且重复部分只保留一份
192.168.65.15:6379> sunion student1 student2

  1. “20”
  2. “boy”
  3. “22”
  4. “zs”
  5. “ls”

  6. 计算差集

    ce3169292fd37b2f1dfa59337008bded.png

文章底部扫码,免费领取Redis资料大礼包!

#sdiff key1 key2 结果是 key1中去重重复部分
192.168.65.15:6379> sdiff student1 student2

  1. “20”
  2. “zs”

  3. 保存结果
    最后我们把上述操作的命令完整地展示在下面。

#计算交集,并保存
#sinterstore 保存的key key1 key2
192.168.65.15:6379> sinterstore student_jj student1 student2
(integer) 1
192.168.65.15:6379> smembers student_jj

  1. “boy”

#计算并集,并保存
#sunionstore 保存的key key1 key2
192.168.65.15:6379> sunionstore student_bj student1 student2
(integer) 5
192.168.65.15:6379> smembers student_bj

  1. “20”
  2. “boy”
  3. “22”
  4. “zs”
  5. “ls”

#计算差集,并保存
#sdiffstore 保存的key key1 key2
192.168.65.15:6379> sdiffstore student_cj student1 student2
(integer) 2
192.168.65.15:6379> smembers student_cj

  1. “20”
  2. “zs”
    192.168.65.15:6379>
    四. 应用场景
    学习完了Set命令,我们又该把Set应用在哪些地方呢?以下是我们总结出来的一些常见应用场景。

    4e7c299bb7743ee15a9acdc06d98e450.png

文章底部扫码,免费领取Redis资料大礼包!

#用户1的开发语言标签:
192.168.65.15:6379> sadd user1 java go python
(integer) 3

#用户2的开发语言标签:
192.168.65.15:6379> sadd user2 java net c#
(integer) 3

#用户1和用户2的开发语言共同标签:
192.168.65.15:6379> sinter user1 user2

  1. “java”

#设置一个奖品池:一等奖num1 至 四等奖num4
192.168.65.15:6379> sadd prize num1 num2 num3 num4
(integer) 4
#随机抽取奖品
192.168.65.15:6379> spop prize 1

  1. “num2”
  2. 如果上面的文章看着比较枯燥,点击下面的链接直接观看:

    千锋教育Redis 6 入门到实战教程,redis底层原理+redis分布式锁

    7a25a48c13c04c3db58b09eccce3b821.png

    也可以扫码直接观看视频哦!绝对的干货满满,更多精彩视频B站搜索“千锋教育”

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读

    相关 redis数据类型set

    set(集合):其实就是数学中的集合,集合中元素要具备三个特性:确定性、无序性、互异性。 确定性:一个元素要么属于集合,要么不属于集合。 无序性:集合中每个元素的

    相关 redis学习——Set数据类型

    一、概述 在Redis中,我们可以将Set类型看作为没有排序的字符集合,和List类型一样,我们也可以在该类型的数据值上执行添加、删除或判断某一元素是否存在等操作。需要说