Redis--Set结构及其应用场景

Redis--Set结构及其应用场景

前言

集合(set)类型也是用来保存多个 字符串元素,但和列表类型不一样的是,集合中 不允许有重复元素,
并且集合中的元素是无序的, 不能通过索引下标 获取元素。

Set数据结构

Redis--Set结构及其应用场景

Set应用场景

Redis--Set结构及其应用场景

  • 微信抽奖小程序
    如下:用户18888,18889,18890参与抽奖用set命令SADD key userId,用SMEMBERS key可以查看参与抽奖的所有用户,
    SRANDMENBER act:1008 2 在所有参与抽奖的用户中随机抽取两个,
    SRANDMENBER act:1008 1 在所有参与抽奖的用户中随机抽取一个并在集合中删除
    Redis--Set结构及其应用场景

  • 微信微博点赞,收藏,标签
    Redis--Set结构及其应用场景

Set集合操作

  • SINTER set1,set2,set3 :取set1,set2,set3的交集,如下图集合set1,set2,set3都包含元素{c},那么{c}就是set1,set2,set3的交集
  • SUNION set1,set2,set3:取set1,set2,set3的并集
  • SDIFF set1,set2,set3:取set1,set2,set3的差集,即set1减去set2和set3的并集,如下图集合set1包含元素{a,b,c}集合set2+set3的并集为{b,c,d,e},那么他们的差集就是{a,b,c}-{b,c,d,e}={a}
    Redis--Set结构及其应用场景
  • 集合操作实现微博微信关注模型
    Redis--Set结构及其应用场景
    共同关注:求交集
    我关注的人也关注他(杨过老师)
    SISMEMBER simaSet yangguo:判断yangguo是否存在于simaSet
    SISMEMBER lubanSet yangguo:判断yangguo是否存在于lubanSet
    我可能认识的人:求差集
    SDIF yangguoSet zhugeSet 取yangguoSet和zhugeSet的差集
    即yangguo关注的那些zhuge没有关注过的人
    Redis--Set结构及其应用场景
    Redis--Set结构及其应用场景
    Redis--Set结构及其应用场景