SET常用操作
SADD key member [member...] 往集合key中存入元素,元素存在则忽略,若key不存在则新建
SREM key member [member...] 删除集合key中元素
SMEMBERS key 获取集合key中所有元素
SCARD key 获取集合key的元素个数
SISMEMBER key member 判断member元素是否存在于集合key中
SRANDMEMBER key [count] 从集合中选出count个元素,元素不从key中删除
SPOP key [count] 从集合中先出count个元素,元素从key中删除
SET运算操作
SINTER key [key...] 交集运算
SINTERSTORE destination key [key...] 将交集运算结果存入新的集合destination中
SUNION key [key...] 并集运算
SUNIONSTORE destionation key [key...] 将并集结果存入新的集合destionation中
SDIFF key [key...] 差集运算
SDIFFSTORE destionation key [key...] 将差集运算结果存入新集合destionation中
应用场景
- 微信抽奖小程序
1) 点击参与抽奖加入集合
SADD key {USER:ID}
2) 查看所有抽奖用户
SMEMBERS key
3) 抽取count名中奖者
SRANDMEMBER key [count] //可以重复抽
SPOP key [count] //不可以重复抽
- 微信微博点赞,收藏,标签
1) 点赞
SADD like:{消息ID} {用户ID}
2) 取消点赞
SREM like:{消息ID} {用户ID}
3) 检查用户是否点过赞
SISMEMBER like:{消息ID} {用户ID}
4)获取用户点击列表
SMEMBERS like:{消息ID}
5) 获取点赞用户数
SCARD like:{消息ID}
- SET集合操作实现关注模型
1) A用户关注的人
ASet -> {c, d}
2) B用户关注的人
BSet -> {a, c ,d}
3) C用户关注的人
CSET -> {a,b,d,e,f}
4) A与B共同关注的人
SINTER ASet BSet -> {c,d}
5) A关注的人也关注过当前用户currUser
//A关注的用户有c,d,只需要查找对应用户集合,中是否存在用户
SISMEMBER CSET currUser
SISMEMBER DSET currUser
6) A可能认识的人
//还需要移除掉a
SDIFF BSet Aset -> {a}
SDIFF CSET ASET -> {a,b,e,f}
- SET集合操作实现电商商品筛选
SADD brand:huawei p40
SADD brand:xianmi mi-10
SADD brand:iphone iphone12
SADD os:android p40 mi-10
SADD cpu:brand:intel p40 min-10
SADD ram:8G p40 mi-10 iphone12
筛选安卓系统,intel品牌cpu,内存8G的手机品牌有哪些
SINTER os:android cpu:brand:intel ram:8G -> {P40, min-40}