这里我们来学习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集合来实现。
有好的建议,请在下方输入你的评论。