首先我们需要知道set中的值是不能重复的!
set就是一个无序不重复集合。
1、给set集合中添加元素的命令:
127.0.0.1:6380> sadd myset zhaoyongchao #set集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "i love you" #set集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "ni zhen niu" #set集合中添加值
(integer) 1
127.0.0.1:6380> SMEMBERS myset #查看指定set集合中所有值
1) "ni zhen niu"
2) "zhaoyongchao"
3) "i love you"
127.0.0.1:6380> SISMEMBER myset zhaoyongchao #判断某一个值是否在set集合中,返回1则是存在
(integer) 1
127.0.0.1:6380> SISMEMBER myset zyc #判断某一个值是否在set集合中,返回0则是不存在
(integer) 0
2、获取set集合中的元素个数命令:
127.0.0.1:6380> sadd myset "zyc" #set集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "zyc1" #set集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "zyc2" #set集合中添加值
(integer) 1
127.0.0.1:6380> scard myset #获取set集合中的元素个数
(integer) 3
3、移出set集合中的指定元素命令:
127.0.0.1:6380> sadd myset "zyc" #set集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "zyc1" #set集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "zyc2" #set集合中添加值
(integer) 1
127.0.0.1:6380> scard myset #获取set集合中的元素个数
(integer) 3
127.0.0.1:6380> srem myset zyc #删除set集合中的指定元素
(integer) 1
127.0.0.1:6380> SMEMBERS myset #查看set集合中的所有值
1) "zyc2"
2) "zyc1"
4、set集合中随机抽出一个元素的命令:
127.0.0.1:6380> SMEMBERS myset #查看set集合中的所有值
1) "zyc2"
2) "zyc1"
127.0.0.1:6380> SRANDMEMBER myset #随机抽选出一个元素
"zyc1"
127.0.0.1:6380> SRANDMEMBER myset #随机抽选出一个元素
"zyc1"
127.0.0.1:6380> SRANDMEMBER myset #随机抽选出一个元素
"zyc2"
127.0.0.1:6380> SRANDMEMBER myset 2 #随机抽选出指定个数的元素
"zyc2"
"zyc1"
5、随机删除一个key的命令:
127.0.0.1:6380> SMEMBERS myset #查看set集合中的所有值
1) "zyc2"
2) "zyc1"
127.0.0.1:6380> spop myset #随机删除一个set集合中的元素
"zyc2"
127.0.0.1:6380> SMEMBERS myset #查看set集合中的所有值
1) "zyc1"
6、将一个指定的元素,移到另一个set集合中的命令:
127.0.0.1:6380> sadd myset "hello" #myset集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "hello1" #myset集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset "hello2" #myset集合中添加值
(integer) 1
127.0.0.1:6380> sadd myset2 "word0" #myset2集合中添加值
(integer) 1
127.0.0.1:6380> smove myset myset2 "hello" #将myset集合中的“hello”移出到myset2集合中
(integer) 1
127.0.0.1:6380> SMEMBERS myset #获取myset集合的所有值
1) "hello2"
2) "hello1"
127.0.0.1:6380> SMEMBERS myset2 #获取myset2集合中的所有值
1) "hello"
2) "word0"
7、实现微博、抖音、快手等平台的【共同关注】命令:
数组集合类:
交集:SINTER
并集:SUNION
差集:SDIFF
127.0.0.1:6380> sadd key1 a #给key1集合添加值
(integer) 1
127.0.0.1:6380> sadd key1 b #给key1集合添加值
(integer) 1
127.0.0.1:6380> sadd key1 c #给key1集合添加值
(integer) 1
127.0.0.1:6380> sadd key2 b #给key2集合添加值
(integer) 1
127.0.0.1:6380> sadd key2 c #给key2集合添加值
(integer) 1
127.0.0.1:6380> sadd key2 e #给key2集合添加值
(integer) 1
127.0.0.1:6380> SDIFF key1 key2 #获取key1跟key2两个set集合之间的差集(不相同的数据),获取key2与key1之间的差集就是 SDIFF key2 key1
1) "a"
127.0.0.1:6380> SINTER key1 key2 #获取key1与key2之间的交集(两个set集合中都有的数据)-共同好友,共同关注都可以这么实现!
1) "b"
2) "c"
127.0.0.1:6380> SUNION key1 key2 #获取key1与key2集合之间的并集(将key1与key2两个set集合中的数据进行合并)
1) "a"
2) "b"
3) "c"
4) "e"
总结:
比如要实现抖音上的查看互相关注功能,将a用户所有关注的人都放在一个set集合(myGZ)中,将a用户的所有粉丝放在另一个set集合(myFS)中。那么我们就可以很方便的就去实现查看多个用户之间的【共同关注】、【共同喜欢】等内容。
那么现在我们就来简单的实现一下吧!!!
一、简单实现myGZ1(用户a)与myGZ2(用户b)之间的共同关注:
127.0.0.1:6380> sadd myGZ1 gz1 #设置myGZ1的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ1 gz2 #设置myGZ1的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ1 gz3 #设置myGZ1的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ1 gz4 #设置myGZ1的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ1 gz5 #设置myGZ1的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ2 gz10 #设置myGZ2的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ2 gz5 #设置myGZ2的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ2 gz6 #设置myGZ2的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ2 gz8 #设置myGZ2的关注人
(integer) 1
127.0.0.1:6380> sadd myGZ2 gz7 #设置myGZ2的关注人
(integer) 1
127.0.0.1:6380> SINTER myGZ1 myGZ2 #查出myGZ1与myGZ2之间共同关注的人
1) "gz5"
那么看到这里,想要查询出他们的共同粉丝也就so easy了吧!