Redis-set(集合)学习

首先我们需要知道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了吧!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超大钞票

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值