Redis重制(六)set类型

14 阅读3分钟

这里我们来学习redis的第三个数据类型:set

 

Set一般用于存储唯一的字符串元素,如标签、好友列表等。

 

Set命令一般都以s开头

 

Set是一个无序且不重复集合

 

1:sadd添加元素

127.0.0.1:6379> sadd set1 hello world camellia
(integer) 3
127.0.0.1:6379> smembers set1
1) "hello"
2) "world"
3) "camellia"

 

2:smembers查看指定set所有元素

127.0.0.1:6379> sadd set1 hello world camellia
(integer) 3
127.0.0.1:6379> smembers set1
1) "hello"
2) "world"
3) "camellia"

 

3:SISMEMBER 查看当前set是否存在某个元素

127.0.0.1:6379> smembers set1
1) "hello"
2) "world"
3) "camellia"
127.0.0.1:6379> sismember set1 camellia
(integer) 1
127.0.0.1:6379> sismember set1 camellias
(integer) 0
127.0.0.1:6379> sismember set1 xxx
(integer) 0

 

4:scard获取set集合中的元素个数

127.0.0.1:6379> scard set1
(integer) 3

 

5:srem移除set中指定元素

127.0.0.1:6379> smembers set1
1) "hello"
2) "world"
3) "camellia"
127.0.0.1:6379> srem set1 hello
(integer) 1
127.0.0.1:6379> smembers set1
1) "world"
2) "camellia"

 

6:srandmember从set中随机筛选出来指定个数成员

127.0.0.1:6379> smembers set1                # 显示所有成员
1) "world"
2) "camellia"
3) "qwe"
4) "asdf"
5) "zxxc"
6) "qaz"
7) "wsx"
127.0.0.1:6379> srandmember set1 3       # 随机选择三个数值
1) "qwe"
2) "asdf"
3) "qaz"

 

7:spop随机移除一个元素,返回删除的元素

127.0.0.1:6379> smembers set1                       # 查看所有元素
1) "world"
2) "camellia"
3) "qwe"
4) "asdf"
5) "zxxc"
6) "qaz"
7) "wsx"
127.0.0.1:6379> spop set1 1                            # 随机删除一个元素
1) "wsx"
127.0.0.1:6379> smembers set1                       # 查看所有元素
1) "world"
2) "camellia"
3) "qwe"
4) "asdf"
5) "zxxc"
6) "qaz"

 

8:smove将一个指定的值,移动到另一个集合中

127.0.0.1:6379> smove set1 set2 camellia        # 将set1中的camellia转移到set2中
(integer) 1
127.0.0.1:6379> smembers set2                       # 查看set2
1) "camellia"
127.0.0.1:6379> smembers set1                       # 查看set1
1) "world"
2) "qwe"
3) "asdf"
4) "zxxc"
5) "qaz"

 

10:set取并集(共同关注)

数字集合类:

差集:SDIFF:两个集合不一样的地方

127.0.0.1:6379> smembers set1
1) "world"
2) "qwe"
3) "asdf"
4) "zxxc"
5) "qaz"
127.0.0.1:6379> smembers set2
1) "camellia"
2) "hello"
3) "qaz"
4) "qwe"
127.0.0.1:6379> sdiff set1 set2
1) "world"
2) "asdf"
3) "zxxc"

 

交集:SINTER:两个集合一样的元素

127.0.0.1:6379> smembers set1
1) "world"
2) "qwe"
3) "asdf"
4) "zxxc"
5) "qaz"
127.0.0.1:6379> smembers set2
1) "camellia"
2) "hello"
3) "qaz"
4) "qwe"
127.0.0.1:6379> sinter set1 set2
1) "qaz"
2) "qwe"

 

并集:SUNION:两个集合所有的元素

127.0.0.1:6379> smembers set1
1) "world"
2) "qwe"
3) "asdf"
4) "zxxc"
5) "qaz"
127.0.0.1:6379> smembers set2
1) "camellia"
2) "hello"
3) "qaz"
4) "qwe"
127.0.0.1:6379> sunion set1 set2
1) "world"
2) "qwe"
3) "asdf"
4) "zxxc"
5) "qaz"
6) "camellia"
7) "hello"

 

11:Sunionstore将给定集合的并集存储在指定的集合 destination 中。如果 destination 已经存在,则将其覆盖。

127.0.0.1:6379> sunionstore unionset set1 set2
(integer) 7
127.0.0.1:6379> smembers unionset
1) "world"
2) "qwe"
3) "asdf"
4) "zxxc"
5) "qaz"
6) "camellia"
7) "hello"

 

12:SINTERSTORE将给定集合之间的交集存储在指定的集合中。如果指定的集合已经存在,则将其覆盖。

127.0.0.1:6379> sinterstore interset set1 set2
(integer) 2
127.0.0.1:6379> smembers interset
1) "qaz"
2) "qwe"

 

13:删除某个set,注意这是删除set集合,不是删除set集合中的某个值

127.0.0.1:6379> keys *
 1) "name"
 2) "dalian"
 3) "set1"
 4) "list2"
 5) "set2"
 6) "hash1"
 7) "webscoket-1"
 8) "interset"
 9) "list1"
10) "unionset"
127.0.0.1:6379> del set1
(integer) 1
127.0.0.1:6379> keys *
1) "name"
2) "dalian"
3) "list2"
4) "set2"
5) "hash1"
6) "webscoket-1"
7) "interset"
8) "list1"
9) "unionset"

 

 

微博,A用户将所有关注的人放在一个st集合中!将它的粉丝也放在一个集合中!

共同关注,共同爱好,二度好友,推荐好友!(六度分割理论)

 

或者,文章点赞系统也可以使用set集合来实现。

 

有好的建议,请在下方输入你的评论。