Set(集合)
et中的值是不能重复的,set是无序的
set中的命令都是以"S"开头的
1 sadd (set) (value) 给set添加元素
127.0.0.1:6379[2]> sadd myset hello #创建一个set里面的值为hello (integer) 1 127.0.0.1:6379[2]> sadd myset hello #给set再添加一个重复的值,成功元素的个数为0,因为不能重复 (integer) 0 127.0.0.1:6379[2]> smembers myset #查看myset这个set 1) "hello"
2 smembers (set)查看set里面的元素
127.0.0.1:6379[2]> sadd myset hello #创建一个set里面的值为hello (integer) 1 127.0.0.1:6379[2]> sadd myset hello #给set再添加一个重复的值,成功元素的个数为0,因为不能重复 (integer) 0 127.0.0.1:6379[2]> smembers myset #查看myset这个set 1) "hello"
3 sismember (value)判断set里面有没有这个元素,有的话返回1,没有的话返回0
127.0.0.1:6379[2]> sismember myset hello #判断myset中有没有hello这个元素 (integer) 1 #有的话返回1 127.0.0.1:6379[2]> sismember myset hellohe #判断myset中有没有hellohe这个元素 (integer) 0 #没有的话返回0
4 scard(set)查看set里面的元素的个数
127.0.0.1:6379[2]> scard myset #查看set里面元素的个数 (integer) 3
5 srem(set)(value)从set中删除指定的元素
127.0.0.1:6379[2]> srem myset hello #从myset中删除hello这个元素 (integer) 1 #返回1表示删除成功 127.0.0.1:6379[2]> srem myset hello2232 #从myset中删除hello2232 这个元素 (integer) 0 #返回0表示删除失败,因为没有这个元素 127.0.0.1:6379[2]> smembers myset #查看myset里面的元素 1) "hello1" 2) "hello2"
6 smembers (set)(count)随机冲set取出几个(count)个元素
场景:随机数
127.0.0.1:6379[2]> smembers myset #查看myset中的全部元素 1) "hello1" 2) "hello3" 3) "hello2" 4) "hello4" 5) "hello5" 127.0.0.1:6379[2]> srandmember myset 1 #随机从myset中取出一个元素 1) "hello3" 127.0.0.1:6379[2]> srandmember myset 2 #随机从myset中取出2个元素 2) "hello2" 127.0.0.1:6379[2]> srandmember myset 3 #随机从myset中取出3个元素 1) "hello1" 2) "hello3" 3) "hello2"
7 spop (set)(count)随机移出几个元素
127.0.0.1:6379[2]> spop myset #随机移出1个元素 "hello4" 127.0.0.1:6379[2]> spop myset 2 #随机移出2个元素 1) "hello5" 2) "hello3" 127.0.0.1:6379[2]> smembers myset #查看全部的元素 1) "hello1" 2) "hello2"
8 smove(需要移出的set)(移出到哪的set)(需要移出的元素)把一个set中具体的元素移到另外一个set中
127.0.0.1:6379[2]> sadd set1 a #创建新的set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set1 b #创建新的set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set1 c #创建新的set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set2 d #创建新的set添加元素 (integer) 1 127.0.0.1:6379[2]> smove set1 set2 a #把set1中的a元素指定移出到set2中 (integer) 1 127.0.0.1:6379[2]> smembers set1 #查看set1 1) "b" 2) "c" 127.0.0.1:6379[2]> smembers set2 #查看set2 1) "a" 2) "d"
9 sdiff(set11)(set2) sinter(set11)(set2) sunion (set11)(set2) 求连个set的差集 交集 并集,那个set在前面就是以哪个set作为参照物
使用场景:
以下场景都是可以通过交集实现的
1 共同关注(A和B共同关注点人)
2 共同好友(我们之间的共同好友 )
3微博,A用户把所有关注点人放在一个set里,将它的粉丝也放在一个集合中 共同关注,共同好友,共同爱好,二度好友,推荐好友
数字集合类:
1 差集 sdiff(两个集合相差的元素)
2 交集 sinte (两个集合都有的元素)
3 并集 sunion (两个集合一共的元素)
127.0.0.1:6379[2]> sadd set a #创建set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set b #创建set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set c #创建set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set2 c #创建set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set2 d #创建set添加元素 (integer) 1 127.0.0.1:6379[2]> sadd set2 e #创建set添加元素 (integer) 1 127.0.0.1:6379[2]> sdiff set set2 #查看set和set2的差集 1) "a" 2) "b" 127.0.0.1:6379[2]> sinter set set2 #查看set和set2的交集 1) "c" 127.0.0.1:6379[2]> sunion set set2 #查看set和set2的并集 1) "c" 1) "b" 2) "c" 3) "a" 4) "d" 5) "e"