Redis数据类型之一:set

set类型

可理解为一种特殊的列表,集合中不能出现重复的值。即使为某集合添加重复元素,该集合也只会保存一个。常与随机事件搭配使用。

SADD

SADD key member [member …]
添加一个或多个指定的member元素到集合的 key中。
指定的一个或者多个元素member 如果已经在集合key中存在则忽略。
如果集合key 不存在,则新建集合key,并添加member元素到集合key中。
如果key 的类型不是集合则返回错误。
返回值:返回新成功添加到集合里元素的数量,不包括已经存在于集合中的元素。

集合是无序的,与加入顺序无关。

SMEMBERS

SMEMBERS key
返回key集合所有的元素。
该命令的作用与使用一个参数的SINTER 命令作用相同。

虽看上去每次的输出顺序都相同,但集合就是无序存放的。

SISMEMBER

SISMEMBER key member
返回成员 member 是否是存储的集合 key的成员。
返回值:

  • 如果member元素是集合key的成员,则返回1
  • 如果member元素不是key的成员,或者集合key不存在,则返回0

SCARD

SCARD key
返回集合存储的key的基数 (集合元素的数量)。
返回值:集合的基数(元素的数量),如果key不存在,则返回 0。

SRANDMEMBER

SRANDMEMBER key [count]
仅提供key参数,那么随机返回key集合中的一个元素。

  • 若count是整数且小于元素的个数,返回含有 count 个不同的元素的数组。
  • 若count是个整数且大于集合中元素的个数时,仅返回整个集合的所有元素。
  • 若count是负数,则会返回一个包含count的绝对值的个数元素的数组。
  • 若count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况。

返回值:

  • 不使用count 参数的情况下该命令返回随机的元素,如果key不存在则返回nil。
  • 使用count参数,则返回一个随机的元素数组,如果key不存在则返回一个空的数组。

SREM

SREM key member [member …]
在key集合中移除指定的元素。可同时移除多个。
如果指定的元素不是key集合中的元素则忽略。
如果key的类型不是一个集合,则返回错误。
返回值:从集合中移除元素的个数,不包括不存在的成员。

如果key集合不存在,则被视为一个空的集合,该命令返回0。

SPOP

SPOP key [count]
从存储在key的集合中移除并返回一个或多个随机元素。
此操作与SRANDMEMBER类似,从一个集合中返回一个或多个随机元素,但SRANDMEMBER不删除元素。
返回值:被删除的元素,或者当key不存在时返回nil。

SMOVE

SMOVE source destination member
将member从source集合移动到destination集合中。
如果source 集合不存在或者不包含指定的元素,该smove命令不执行任何操作并且返回0。否则对象将会从source集合中移除,并添加到destination集合中去。
如果destination集合已经存在该元素,则smove命令仅将该元素充source集合中移除。
返回值:

  • 如果该元素成功移除,返回1
  • 如果该元素不是 source集合成员,无任何操作,则返回0。
  • 如果source 和destination不是集合类型,则返回错误。
    在这里插入图片描述
    若destination集合不存在,则创建destination集合,再将元素添加。source集合必须存在。
    在这里插入图片描述

SDIFF

SDIFF key [key …]
返回一个集合与给定集合的差集的元素。
不存在的key认为是空集。

找class1有的,而class2没有的。

找class2有的,而class1没有的。

【注意:在使用时,注意以哪个集合作为参照】

SINTER

SINTER key [key …]
返回指定所有的集合的成员的交集。(一个集合为空,结果一直为空)
如果key不存在,则被认为是一个空的集合。
class3不存在

SUNION

SUNION key [key …]
返回给定的多个集合的并集中的所有成员。
返回给定的多个集合的并集中的所有成员。
重复元素值显示一次

(无序)集合的使用场景

  • 共同关注
  • 个人关注
  • 好友推荐
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值