redis 交集、并集、差集的具体使用

时间:2022-05-15 07:16:45

一、sinter 、sunion 、sdiff

redis 支持 set集合的数据存储,其中有三个比较特殊的方法:

 

  • sinter key [key …] 查看一个集合的全部成员,该集合是所有给定集合的交集。
  • sunion key [key …] 查看一个集合的全部成员,该集合是所有给定集合的并集。
  • sdiff key [key …] 查看所有给定 key 与第一个 key 的差集

1.1、sinter 交集的示例

?
1
2
3
4
5
6
7
8
9
10
11
redis> smembers group_1
1) "li lei"
2) "tom"
3) "jack"
 
redis> smembers group_2
1) "han meimei"
2) "jack"
 
redis> sinter group_1 group_2  # 取的是交集的数据
1) "jack"

1.2、sunion 并集的示例

?
1
2
3
4
5
6
7
8
9
redis> smembers songs
1) "billie jean"
 
redis> smembers my_songs
1) "believe me"
 
redis> sunion songs my_songs  # 取的是集合的并集数据据
1) "billie jean"
2) "believe me"

1.3、sdiff 差集的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
redis> smembers peter_movies
1) "bet man"
2) "start war"
3) "2012"
 
redis> smembers joe_movies
1) "hi, lady"
2) "fast five"
3) "2012"
 
redis> sdiff peter_movies joe_movies  # 取的是两个集合的差集的数据
1) "bet man"
2) "start war"

二、sinterstore、sunionstore、sdiffstore

 

  • sinterstore destination key [key …] 将 交集 数据存储到某个对象中
  • sunionstore destination key [key …] 将 并集 数据存储到某个对象中
  • sdiffstore destination key [key …] 将 差集 数据存储到某个对象中

2.1、sinterstore 交集的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
redis> smembers songs
1) "good bye joe"
2) "hello,peter"
 
redis> smembers my_songs
1) "good bye joe"
2) "falling"
 
redis> sinterstore song_interset songs my_songs   # 将交集的数据存储到 song_interset 对象中
(integer) 1
 
redis> smembers song_interset     # 查看 song_interset 对象中的 所有数据
1) "good bye joe"

2.2、sunionstore 并集的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
redis> smembers nosql
1) "mongodb"
2) "redis"
 
redis> smembers sql
1) "sqlite"
2) "mysql"
 
redis> sunionstore db nosql sql  # 将并集的数据存储到 db 对象中
(integer) 4
 
redis> smembers db   # 查看 db 对象中的 所有数据
1) "mysql"
2) "sqlite"
3) "mongodb"
4) "redis"

2.3、sdiffstore 差集的示例

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
redis> smembers joe_movies
1) "hi, lady"
2) "fast five"
3) "2012"
 
redis> smembers peter_movies
1) "bet man"
2) "start war"
3) "2012"
 
redis> sdiffstore joe_diff_peter joe_movies peter_movies   # 将差集的数据存储到 joe_diff_peter 对象中
(integer) 2
 
redis> smembers joe_diff_peter    # 查看 joe_diff_peter 对象中的 所有数据
1) "hi, lady"
2) "fast five"

到此这篇关于redis 交集、并集、差集的具体使用的文章就介绍到这了,更多相关redis 交集、并集、差集内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!