redis 支持 Set集合的数据存储,其中有三个比较特殊的方法
sinter key [key …] 返回一个集合的全部成员,该集合是所有给定集合的交集。
sunion key [key …] 返回一个集合的全部成员,该集合是所有给定集合的并集。
sdiff key [key …] 返回所有给定 key 与第一个 key 的差集
sinter 代码示例
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"
sunion 代码示例
redis> SMEMBERS songs
1) "Billie Jean"
redis> SMEMBERS my_songs
1) "Believe Me"
# 取的是集合的并集数据据
redis> SUNION songs my_songs
1) "Billie Jean"
2) "Believe Me"
sdiff 代码示例
redis> SMEMBERS peter's_movies
1) "bet man"
2) "start war"
3) "2012"
redis> SMEMBERS joe's_movies
1) "hi, lady"
2) "Fast Five"
3) "2012"
# 取的是两个集合的差集的数据
redis> SDIFF peter's_movies joe's_movies
1) "bet man"
2) "start war"
sinterstore destination key [key …] 将 交集 数据存储到某个对象中
sunionstore destination key [key …] 将 并集 数据存储到某个对象中
sdiffstore destination key [key …] 将 差集 数据存储到某个对象中
sinterstore 代码示例
redis> SMEMBERS songs
1) "good bye joe"
2) "hello,peter"
redis> SMEMBERS my_songs
1) "good bye joe"
2) "falling"
# 将交集的数据存储到 song_interset 对象中
redis> SINTERSTORE song_interset songs my_songs
(integer) 1
# 返回 song_interset 对象中的 所有数据
redis> SMEMBERS song_interset
1) "good bye joe"
sunionstore 代码示例
redis> SMEMBERS NoSQL
1) "MongoDB"
2) "Redis"
redis> SMEMBERS SQL
1) "sqlite"
2) "MySQL"
# 将并集的数据存储到 db 对象中
redis> SUNIONSTORE db NoSQL SQL
(integer) 4
# 返回 db 对象中的 所有数据
redis> SMEMBERS db
1) "MySQL"
2) "sqlite"
3) "MongoDB"
4) "Redis"
sdiffstore 代码示例
redis> SMEMBERS joe's_movies
1) "hi, lady"
2) "Fast Five"
3) "2012"
redis> SMEMBERS peter's_movies
1) "bet man"
2) "start war"
3) "2012"
# 将差集的数据存储到 joe_diff_peter 对象中
redis> SDIFFSTORE joe_diff_peter joe's_movies peter's_movies
(integer) 2
# 返回 joe_diff_peter 对象中的 所有数据
redis> SMEMBERS joe_diff_peter
1) "hi, lady"
2) "Fast
网友评论