美文网首页
redis 交集、并集、差集

redis 交集、并集、差集

作者: 说说道道 | 来源:发表于2019-05-07 11:22 被阅读0次

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

相关文章

网友评论

      本文标题:redis 交集、并集、差集

      本文链接:https://www.haomeiwen.com/subject/smbsoqtx.html