前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >redis妙用-set类型

redis妙用-set类型

原创
作者头像
并发笔记
修改2020-10-22 10:13:24
1K0
修改2020-10-22 10:13:24
举报
文章被收录于专栏:并发笔记并发笔记

    set类型,在redis中是非常强大的存在,但是我们一般不会想到用它。所以我最想分享的也就是set类型,想让大家对set引起重视。因为在互联网中其实也有很多set的身影,只是我们不难么容易联想到而已。比如

  • 抽奖活动
  • 点赞、签到
  • 好友关注模型
  • 电商商品筛选
  • 大数据量对账
api

基本操作

命令

说明

SADD key membermember...

存储元素

SREM key membermember...

从集合中删除元素

SMEMBERS key

获取集合中所有元素

SCARD key

获取集合的元素个数

SISMEMBER key member

判断{member}是否存在集合中

SRANDMEMBER key count

从集合中随机选出{count}个元素,不删除

SPOP key count

从集合中随机选出{count}个元素,删除

集合运算操作

命令

说明

SINTER key key...

交集运算

SUNION key key...

并集运算

SDIFF key key...

差集运算

SINTERSTORE {resultKey} key key...

交集运算,保存到resultKey中

SUNIONSTORE {resultKey} key key...

并集运算,保存到resultKey中

SDIFFSTORE {resultKey} key key...

差集运算,保存到resultKey中

应用场景
抽奖活动
# 刷礼物或转发,将用户加入到抽奖集合中
SADD key {userId} 

# 抽取中奖用户
SPOP/SRANDMEMBER key [count]
点赞、签到
set实现点赞
set实现点赞
SADD like::{articleId} {userId}  # 点赞
SREM like::{articleId} {userId}  # 取消赞
SISMEMBER like::{articleId} {userId}  # 检查用户是否点过赞
SMEMBERS like::{articleId}  # 获取所有点赞用户列表
SCARD like::{articleId}  # 获取点赞用户数
好友关注模型
set关注列表
set关注列表
far关注的人:farsub -> {"jayden", "james", "mic"}
ally关注的人:allysub -> {"seven", "jack", "mic", "james"}

far和ally共同关注的人:SINTER farsub allysub -> {"mic", "james"}
far关注的人是否关注了ally:SISMEMBER allysub jayden、 SISMEMBER allysub james
far可能认识的人:SDIFF allysub farsub -> {"seven", "jack"}
电商商品筛选
set电商商品筛选
set电商商品筛选

    在每个商品入库的时候,给没有商品建立它的静态标签,如品牌、尺寸、处理器、内存...。如下

SADD brand::lenovo 拯救者y7000 Thinkpad-T480
SADD screenSize::15.6 拯救者y7000 雷神911-M5TA
SADD cpu::i7 拯救者y7000 雷神911-M5TA
SADD memory::8G 拯救者y7000 Thinkpad-T480

    那么你在筛选查询的时候,将各个标签放在一起求交集就得到对应的结果,如下

SINTER brand::lenovo screenSize::15.6 cpu::i7 memory::8G  -> 拯救者y7000
订单对账的功能

    场景是这样的,与第三方公司交互时,不能实时对账。第三方公司只能在第二天将前一天的所有订单都传过来,然后要跟我们自己这边的订单对账。

    当你的数据量比较庞大时,一天几十万单的时候,你循环一个个遍历我们的订单是否存在对方的订单中,这样的操作肯定是不合适的。

    使用redis解决方案。将我们要关注的字段值,比如订单号、金额组成一个值存入redis的set类型中,形成两个set集合,然后取差值。如下

set订单对账的功能
set订单对账的功能

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • api
  • 应用场景
    • 抽奖活动
      • 点赞、签到
        • 好友关注模型
          • 电商商品筛选
            • 订单对账的功能
            相关产品与服务
            云数据库 Redis
            腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档