Redis 数据类型--set

set集合

常用命令:

  SADD key member [member ...]     //往集合中存入数据,若元素存在,则忽略数据;若key不存在,则新建

  SREM key member [member ...]    //删除集合中的元素

  SMEMBERS key            //获取集合中的所有元素

  SCARD 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 destination key [key ...]  //将并集运算的结果存入新集合destination中

  SDIFF key [key ...]            //差集运算

  SDIFFSTORE key [key ...]        //将差集运算的结果存入新集合destination中

 

应用场景:

  抽奖活动小程序

  1)参与抽奖:SADD key [userid ...]   //key为活动用户集合,userid为用户。

  2)查看所有参与抽奖的用户:SMEMBER key

  3)抽取count名中奖者:SRANDMEMBER/SPOP key [count]

 

  微信朋友圈点赞、收藏、标签:

  1)点赞:SADD like:{消息ID} {用户ID} //某某动态的点赞集合为like:{消息ID} 谁点赞:{用户ID}

  2)取消点赞:SREM like:{消息ID} {用户ID}

  3)检查用户是否点过赞:SISMEMBER like:{消息ID} {用户ID}

  4)获取用户点赞的列表:SMEMBERS like:{消息ID}

  5)获取点赞用户数:SCARD like:{消息ID}

 

  集合操作:微博关注模型

  我(A)查看了B的微博,我的关注的人的集合为setA,B关注的人的集合为setB,求:

  共同关注:SINTER setA setB

    我关注的人也关注了B:SISMEMBER set:{我关注的人} B

  我可能认识的人(求差集):SDIFF setB setA

posted @ 2020-04-10 00:20  醉深梦始  阅读(146)  评论(0)    收藏  举报