Redis的基本数据类型Set(集合)的API

95 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第4天,点击查看活动详情

set中的值是不能重复的,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 (两个集合一共的元素)