Redis 基础详解

码农日常1个月前更新 Trunks
575 0 0

4、Set 类型 ( Hashset,不重复,无序 )

Set 常用操作

// Set常用操作
// 1、往集合key中存入元素,元素存在则忽略,若key不存在则新建
SADD key member [member ...]
// 2、从集合key中删除元素
SREM key member [member ...]
// 3、获取集合key中所有元素
SMEMBERS key
// 4、获取集合key的元素个数
SCARD key
// 5、判断member元素是否存在于集合key中
SISMEMBER key member
// count表示返回几个随机数;如果count数超过集合元素个数,则返回所有值;如果写的示负数,如-3,表示返回可能重复的三个数
// 6、从集合key中选出count个元素,元素不从key中删除(返回集合中一个或多个随机数)
SRANDMEMBER key [count]
// 7、从集合key中选出count个元素,元素从key中删除
SPOP key [count]
// 移除并返回集合中的一个随机元素
SPOP key

Set 运算操作

Redis
// 1、交集运算
SINTER key [key ...]
// 2、将交集结果存入新集合 destination 中
SINTERSTORE destination key [key ...]
// 3、并集运算
SUNION key [key ...] 
// 4、将并集结果存入新集合 destination 中
SUNIONSTORE destination key [key ...]
// 5、差集运算
SDIFF key [key ...] 
// 6、将差集结果存入新集合 destination 中
SDIFFSTORE destination key [key ...]

适用场景

场景1、抽奖活动

  • 用户 ID,立即参与按钮,sadd key 用户 ID(添加改用户信息进入)
  • 显示已经多少人参与了,SCARD key
  • 从 set 中任意选取 N 个中奖人,SRANDMEMBER key 2 为随机抽奖 2 个人,元素不重复
  • SPOP key 3 为随机抽奖 3 个人,元素会删除

场景2、点赞,收藏,标签

  • 点赞:SADD like:{消息ID}{用户ID}
  • 取消点赞:SREM like:{消息ID}{用户ID}
  • 检查用户是否点过赞:SISMEMBER like:{消息ID}{用户ID}
  • 获取点赞的用户列表:SMEMBERS like:{消息ID}
  • 获取点赞用户数:SCARD like:{消息ID}

集合操作

Redis
SINTER set1 set2 set3->{c}
SUNION set1 set2 set3->{a,b,c,d,e}
SDIFF set1 set2 set3->{a}
1、张三关注的人:
zsSet -> {lisi,wangwu}
2、李四关注的人:
lisiSet -> {zs,wangwu,zhaosi,wangqi}
3、王五关注的人:
wangwuSet -> {zs,lisi,zhaosi,lisan}
4、张三和李四的共同关注:
SINTER zsSet lisiSet --> {wangwu}

© 版权声明

相关文章

暂无评论

暂无评论...