一、引言
不得不说,又到周末了,先说说这周到情况。拿到需求一脸懵逼,上线时间还很近,之前同事写的逻辑还特别复杂。说真的,遇到这种情况小编真的有想法不想干了。那难道辞职? 没办法,周末加个班吧,谁叫我们是程序猿呢?小编也希望其他小伙伴遇到事冷静点,想办法解决就好了,是自己的事终究还得自己解决 心塞~~~~~。
那我们今天继续来讲redis数据类型操作命令吧。
Set是集合,他是String类型的无序集合,set是通过hash table来实现新增、删除、查找的。set集合支持查找集合中的差集、交集、并集。
不了解差集、交集、并集的童鞋可以浏览一下:
https://www.zybang.com/question/bcc41b12789c186c2b9aa3a7e0f400b3.html
二、set数据类型常用命令
sadd:往set集合中添加元素,不能添加重复数据
127.0.0.1:6379> sadd book mathsbook
(integer) 1
127.0.0.1:6379> sadd book chinsesbook
(integer) 1
127.0.0.1:6379>
smembers:查看set集合中的元素
127.0.0.1:6379> smembers book
1) "chinsesbook"
2) "mathsbook"
127.0.0.1:6379>
srem:删除set集合中元素
127.0.0.1:6379> srem book mathsbook
(integer) 1
127.0.0.1:6379> smembers book
1) "chinsesbook"
127.0.0.1:6379>
spop:随机删除set集合中元素,返回删除元素值
127.0.0.1:6379> smembers book
1) "chinsesbook"
2) "englishbook"
3) "mathsbook"
4) "stroybook"
127.0.0.1:6379> spop book
"chinsesbook"
127.0.0.1:6379> spop book
"stroybook"
127.0.0.1:6379> smembers book
1) "englishbook"
2) "mathsbook"
127.0.0.1:6379>
sdiff:取两个set集合的差集,以第一个集合为准,取差集。
127.0.0.1:6379> smembers book
1) "englishbook"
2) "mathsbook"
127.0.0.1:6379> smembers booktwo
1) "mathsbook"
2) "storybook"
127.0.0.1:6379> sdiff book booktwo
1) "englishbook"
127.0.0.1:6379> sdiff booktwo book
1) "storybook"
127.0.0.1:6379>
sdiffstore:取两个set集合的差集,并存储到另一个set集合中
127.0.0.1:6379> smembers book
1) "mathsbook"
2) "storybook"
127.0.0.1:6379> smembers booktwo
1) "chinsesbook"
2) "mathsbook"
127.0.0.1:6379> sdiffstore rebooks book booktwo
(integer) 1
127.0.0.1:6379> smembers rebooks
1) "storybook"
127.0.0.1:6379>
sinter:取两个set集合的交集,同理sinterstore则是把返回交集的结果,存储到另一个set集合中
127.0.0.1:6379> smembers book
1) "mathsbook"
2) "storybook"
127.0.0.1:6379> smembers booktwo
1) "chinsesbook"
2) "mathsbook"
127.0.0.1:6379> sinter book booktwo
1) "mathsbook"
127.0.0.1:6379>
sunion:取出两个set集合的并集,同理sunionstore则是把返回交集的结果,存储到另一个set集合中
127.0.0.1:6379> smembers book
1) "mathsbook"
2) "storybook"
127.0.0.1:6379> smembers booktwo
1) "chinsesbook"
2) "mathsbook"
127.0.0.1:6379> sunion book booktwo
1) "chinsesbook"
2) "mathsbook"
3) "storybook"
127.0.0.1:6379>
smove:从第一个set集中的元素,移动到第二个set集合中
127.0.0.1:6379> smembers book
1) "mathsbook"
2) "storybook"
127.0.0.1:6379> smembers booktwo
1) "chinsesbook"
2) "mathsbook"
127.0.0.1:6379> smove book booktwo storybook
(integer) 1
127.0.0.1:6379> smembers booktwo
1) "chinsesbook"
2) "mathsbook"
3) "storybook"
127.0.0.1:6379>
scard:查看set集中的元素个数,返回个数
127.0.0.1:6379> smembers book
1) "mathsbook"
127.0.0.1:6379> scard book
(integer) 1
127.0.0.1:6379>
sismember:判断该元素,是否存在该set集合中,如果存在返回1,不存在返回0
127.0.0.1:6379> smembers book
1) "mathsbook"
127.0.0.1:6379> sismember book mathsbook
(integer) 1
127.0.0.1:6379> sismember book chinsesbook
(integer) 0
127.0.0.1:6379>
srandmember:随即返回集合中的某个元素,但是不删除元素
127.0.0.1:6379> srandmember booktwo
"mathsbook"
127.0.0.1:6379> srandmember booktwo
"chinsesbook"
127.0.0.1:6379>