【Redis】Set常见应用场景

  • 微信抽奖小程序
1》点击参与抽奖加入集合

SADD  key  {userID}

2》查看参与抽奖所有用户

SMEMBERS key

3》抽取count名中奖者

SRANGEMEMBER key [count]  #不会从原集合中删除元素,适合一次性抽取所有中奖用户

STOP key [count] #会从原集合中删除元素,适合分批抽取中奖用户

  • 微信微博点赞,收藏,标签
1》点在

SADD like:{消息ID} {用户ID}

2》取消点赞

SREM like:{消息ID} {用户ID}

3》检查用户是否点过赞

SISMEMBER like:{消息ID} {用户ID}

4》获取点赞的用户列表

SMEMVERS like:{消息ID}

5》获取点赞用户数

SCARD like:{消息ID}

  • 集合操作

SINTER set1 set2 set3 -> {c}

SUNION set1 set2 set3 -> {a,b,c,d,e}

SDIFF set1 set2 set3 -> {a}
  • 集合操作实现微博微信关注模型
1》菠萝(我)关注的人:

boluoSet -> {caomei,pingguo,xiangjiao}

2》草莓 关注的人: 

caomeiSet -> {boluo,pingguo,xiangjiao,yingtao}

3》苹果 关注的人:

pingguoSet -> {boluo,caomei,yingtao,xiangjiao,fanqie}

4》我和草莓 的共同关注:

SINTER boluoSet caomeiSet --> {pingguo,xiangjiao}

5》我关注的人也关注 草莓:

SISMEMBER caomeiSet caomei

SISMEMBER lubanSet caomei

6》我可能认识的人:

SDIFF caomeiSet boluoSet ->(boluo,yingtao)

学而不思则罔 思而不学则殆 !
原文地址:https://www.cnblogs.com/boluopabo/p/12846817.html