【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)
学而不思则罔 思而不学则殆 !