Redis学习日记:Set类型

随便敲一下在redis学习过程中的东西。。免得看了就忘
都是些很基础的东西。。

在这里插入图片描述
先粗略说一下Set类型的特点:
存储的值具有唯一性(不可重复)、
每个值没有搭配的name或者index、
可以在服务器端进行两个或者多个Set之间的取交集、取并集、取差集,或者根据交集、并集、差集创建新的Set等。由于这些操作都可以在服务器中进行,所以提高了IO的效率



一些和Set相关的语句

①向一个set中插入新的元素,如果该set不存在,则创建该set并插入元素。
sadd key member [member ...]

示例:

sadd myset a b c d e f

②查看一个set中的所有元素,由于set里的元素是没有顺序的,所以每次显示出的元素顺序可能有所不同
smembers key 

示例:

smembers myset

③查看一个set中是否存在某个元素,存在则返回1,不存在返回0
sismember key member

示例:

sismember myset a
执行后返回:
(integer) 0或者(integer) 1

④将一个set中的某个元素【移动】到另一个set中,【移动】类似于剪切,成功移动了元素则返回1,移动失败则返回0
smove source destination member 

示例:

smove myset myset2 a

将myset中的a移动到myset2中
执行后返回(integer) 0或者(integer) 1

⑤查看两个或者多个set之间的差集,它的比较规则有点特殊:
 假如我们将三个set进行取差集的操作,那么会先将setA和setB对比,取出setA中存在而setB中不存在的结果。
 我们暂且将第一次的对比结果叫做setTemp,之后,会将setTemp和setC进行对比,再取出于setTemp中存在而setC中不存在的结果,并将这次比较的结果作为最终结果
 如果取差集操作的set是两个或者三个以上,依然遵循此规则,只不过比较的次数会有所不同而已
sdiff key [key ...]  

示例:

我们先创建三个set,并放入一些数据
sadd setA a b c d
sadd setB b c d f
sadd setC c d f e

为了方便理解,我们先将setA和setB进行取差集的操作
sdiff setA setB
执行后返回:"a",因为"b","c","d"三个字母都在setB中存在,而只有"a"不存在于setB中

接下来对setA setB setC进行取差集的操作
sdiff setA setB setC
执行后返回:"a",这是因为redis会先对setA和setB取差集,结果如上,然后用此结果和setC取差集
		  由于第一次对比的结果只有"a",而setC中有没有a存在,所以最终结果为a

⑥对两个或多个set取差集,然后将最终结果置入一个新的set中。取差集的过程与上面相同,只不过最后会生成一个新的set来储存最终结果,成功执行后,返回受影响的元素个数
sdiffstore destination key [key ...]    

示例:

将setA setB setC取差集的结果置入名为diffSet的set中,如果该set不存在,则新创建一个set并置入结果
diffstore diffSet setA setB setC

执行完毕后,返回结果为:(integer) 1 因为这三张表的差集个数为1

⑦对两个或多个set取交集,比较并取出结果的原理与取差集相同,故不做赘述
sinter key [key ...] 

示例:

sinter setA setB setC

执行后返回:"c","d"

⑧对两个或多个set取交集后将结果置入一个set中,原理与例⑥基本相同,故不作赘述
sinterstore destination key [key ...]   

示例:

sinterstore interSet setA setB setC

执行后返回:(integer) 2

⑧对两个或者多个set取并集,原理与取差集、取交集基本相同,故不作赘述
sunion key [key ...]  

例子就算了吧,看了这么多也该腻了…


⑨对两个或者多个set取并集并将结果置入一个set中,原理同上…
sunionstore destination key [key ...]  

⑩查看某个set一共有多个元素
scard key   

示例:

scard setA

执行后返回:(integer) 4


还有一些似乎没什么卵用的语句


随机查看某个set内的N个元素(不会重复)
srandmember key [count] 

示例:

srandmemeber setA 3

执行后返回:"a","c","d"或者任意三个不重复的元素...

随机【提取出】某个set的N个元素,【提取出】指:返回结果后,这些结果会从set中消除
spop key [count]   

示例:

spop setC 1

执行后返回:随机的一个元素,比如"f",然后"f"就从setC中被移除了


大概就这些,有什么漏了再补充好了
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值