Redis中Set类型的操作

Set的结构与list相似,但底层存储结构是hashtable,因此它的值是唯一的,同时添加的顺序与保存的顺序并不一致。每一个Set类型的key中可以存储2^32-1个元素。

一、应用场景
1、保存用户的收藏

    在小说网站中保存用户的收藏,收藏 的小说并不需要保存收藏的顺序,但收藏过的小说不会再被收藏。

2、关注和粉丝列表

    可用于保存某个用户的关注和粉丝列列表,还可以获得两个列表的交集、并集和差集。

3、文章标签或关键字

    在上传视频,商品等可以添加关键字,关键字不能重复

4、记录空间的访问用户

    记录某人的博客或是某篇文章有哪些人访问过。

二、添加值
1、添加一个或多个元素

    一次添加一个或多个元素,已存在元素会忽略,不存在的元素会被添加,最终返回添加的元素的数量

语法

sadd key member [member ...]

示例

//添加zhangshan的关注者
sadd follow:zhangshan wangwu zhaosi

三、删除值

1、删除并返回指定数量的元素

    由于Set中元素是无序的,因此使用此方法并不知道会删除哪些元素,可以认为是随机的。

语法

spop key [count]

示例

//删除并返回两个元素
spop follow:zhangshan 2

2、删除指定的元素

    删除指定的元素,返回实际删除的元素的数量

语法

srem key member [member ...]

示例

//删除 lisi和wangwu两个关注者
srem follow:zhangshan lisi wangwu

四、查询
1、返回元素的数量

语法

scard key

示例

//获取zhangshan的关注人数
scard follow:zhangshan

2、判断指定的元素是否存在

    判断指定的元素是否存在,如果存在返回1,不存在返回0

语法

sismember key member

示例

//判断lisi是否是zhangshan的关注者
sismember follow:zhangshan lisi

3、返回所有元素

    如果key不存在或是没有元素返回空值,如果存在返回元素列表

语法

smembers key

示例

//返回zhangshan的所有关注者
smembers follow:zhangshan

4、返回多个元素

    此返回的元素是随机的,如果没有元素或是key不存在,返回空值

语法

srandmember key [count]

示例

//随机返回两个zhangshan的关注者
srandmember follow:zhangshan 2

5、使用游标根据条件查询元素

语法

sscan key cursor [MATCH pattern] [COUNT count]

其中

coursor为上次游标的结束位置,一般为0

match为查询条件,模糊部分使用“*”号代替

count为返回的数量,当值小于元素数量很多时,可能会返回超出指定数量的元素

示例

//返回zhangshan的第一个关注者,但实际可能会返回多个
sscan follow:zhangshan 0 count 1

五、交、并和差集处理
1、差集

1)返回第一个集合与其他集合之间的差异

    返回第一个集合中存在,但其它集合中不存在的元素,否则返回空。

语法

sdiff key [key ...]

示例

//第一个集合
sadd set1 v1 v2 v3
//第二个集合
sadd set2 v1 v3 v4
//获取在第一个集合中存在,而第二个集合中不存在的元素
sdiff set1 set2

2)把各集合的差异保存到新的集合中

    把第一个集合中存在,但其它集合中不存在的元素保存到新集合中

语法

sdiffstore destination key [key ...]

示例

//v4
sdiffstore set3 set2 set1
//v2
sdiffstore set4 set1 set2

2、并集

3)返回并集

    返回多个集合中不同的元素的合集

语法

sunion key [key ...]

示例

//"v3""v4""v1""v2
SUNION set1 set2

2)把并集保存到新集合中

语法

sunionstore destination key [key ...]

示例

sunionstore set5 set1 set2

smembers set5

3)交集

1)返回多个集合中相同的元素

语法

sinter key [key ...]

示例

//"v3""v1"
sinter set1 set2

2)把多个集合中相同的元素保存到新的集合中

语法

sinterstore destination key [key ...]

示例

sinterstore set6 set1 set2

smembers set6

 文章来源于哔站《Redis中Set类型的操作

更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-布道师学院个人主页-哔哩哔哩视频

更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ ​ :开源吧

  • 6
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱分享的代码君

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值