随便敲一下在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中被移除了
大概就这些,有什么漏了再补充好了