zoukankan      html  css  js  c++  java
  • Redis的Set类型

    Redis 集合命令

    下表列出了 Redis 集合基本命令:

    序号命令及描述
    1 SADD key member1 [member2] 
    向集合添加一个或多个成员
    2 SCARD key 
    获取集合的成员数
    3 SDIFF key1 [key2] 
    返回给定所有集合的差集
    4 SDIFFSTORE destination key1 [key2] 
    返回给定所有集合的差集并存储在 destination 中
    5 SINTER key1 [key2] 
    返回给定所有集合的交集
    6 SINTERSTORE destination key1 [key2] 
    返回给定所有集合的交集并存储在 destination 中
    7 SISMEMBER key member 
    判断 member 元素是否是集合 key 的成员
    8 SMEMBERS key 
    返回集合中的所有成员
    9 SMOVE source destination member 
    将 member 元素从 source 集合移动到 destination 集合
    10 SPOP key 
    移除并返回集合中的一个随机元素
    11 SRANDMEMBER key [count] 
    返回集合中一个或多个随机数
    12 SREM key member1 [member2] 
    移除集合中一个或多个成员
    13 SUNION key1 [key2] 
    返回所有给定集合的并集
    14 SUNIONSTORE destination key1 [key2] 
    所有给定集合的并集存储在 destination 集合中
    15 SSCAN key cursor [MATCH pattern] [COUNT count] 
    迭代集合中的元素

    示例如下:

    127.0.0.1:6379> SADD users a1 a2 a3 a4
    (integer) 4
    127.0.0.1:6379> SMEMBERS users
    1) "a1"
    2) "a4"
    3) "a2"
    4) "a3"
    127.0.0.1:6379> SREM users a1
    (integer) 1
    127.0.0.1:6379> SMEMBERS users
    1) "a4"
    2) "a2"
    3) "a3"
    127.0.0.1:6379> SCARD users
    (integer) 3
    127.0.0.1:6379> SISMEMBER users a1
    (integer) 0
    127.0.0.1:6379>

    业务场景

    每位用户首次使用今日头条时会设置3项爱好的内容,但是后期为了增加用户的活跃度、兴趣点,必须让用户
    对其他信息类别逐渐产生兴趣,增加客户留存度,如何实现?
    业务分析
       系统分析出各个分类的最新或最热点信息条目并组织成set集合
       随机挑选其中部分信息
       配合用户关注信息分类中的热点信息组织成展示的全信息集合

    127.0.0.1:6379> SADD role r1 r2 r3 r4
    (integer) 4
    127.0.0.1:6379> SRANDMEMBER role
    "r1"
    127.0.0.1:6379> SRANDMEMBER role
    "r3"
    127.0.0.1:6379> SRANDMEMBER role
    "r4"
    127.0.0.1:6379> SRANDMEMBER role
    "r1"
    127.0.0.1:6379> SRANDMEMBER role
    "r2"
    127.0.0.1:6379> SPOP role
    "r3"
    127.0.0.1:6379> SPOP role
    "r2"
    127.0.0.1:6379> SMEMBERS role
    1) "r4"
    2) "r1"
    127.0.0.1:6379>

    redis 应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,热卖旅游线路,应用APP推荐,大V推荐等 

    set 类型数据的扩展操作
    微信公众号是微信信息流通的渠道之一,增加用户关注的公众号成为提高用户活跃度的一种方式,如何帮助
    用户积累更多关注的公众号?
    美团外卖为了提升成单量,必须帮助用户挖掘美食需求,如何推荐给用户最适合自己的美食?

    127.0.0.1:6379> sadd u a1 b1 c1
    (integer) 3
    127.0.0.1:6379> sadd uu a1 b2
    (integer) 2
    127.0.0.1:6379> sadd u22 a2
    (integer) 1
    127.0.0.1:6379> SINTER u uu
    1) "a1"
    127.0.0.1:6379> sunion u uu
    1) "a1"
    2) "c1"
    3) "b2"
    4) "b1"
    127.0.0.1:6379> sdiff u uu
    1) "c1"
    2) "b1"
    127.0.0.1:6379> SDIFF uu u
    1) "b2"
    127.0.0.1:6379> sinterstore uuu u uu
    (integer) 1
    127.0.0.1:6379> SMEMBERS uuu
    1) "a1"
    127.0.0.1:6379> sunionstore uuuu u uu
    (integer) 4
    127.0.0.1:6379> SMOVE u uu c1
    (integer) 1
    127.0.0.1:6379> SMEMBERS u
    1) "a1"
    2) "b1"
    127.0.0.1:6379> SMEMBERS uu
    1) "c1"
    2) "a1"
    3) "b2"
    127.0.0.1:6379>

    redis 应用于同类信息的关联搜索,二度关联搜索,深度关联搜索显示共同关注(一度)
    显示共同好友(一度)
    由用户A出发,获取到好友用户B的好友信息列表(一度)
    由用户A出发,获取到好友用户B的购物清单列表(二度)
    由用户A出发,获取到好友用户B的游戏充值列表(二度) 

    业务场景
    集团公司共具有12000名员工,内部OA系统中具有700多个角色,3000多个业务操作,23000多种数据,每
    位员工具有一个或多个角色,如何快速进行业务操作的权限校验?

    127.0.0.1:6379> sadd r01 getall getById
    (integer) 2
    127.0.0.1:6379> sadd r02 getall insert
    (integer) 2
    127.0.0.1:6379> SUNIONSTORE u07 r01 r02
    (integer) 3
    127.0.0.1:6379> SMEMBERS u07
    1) "getall"
    2) "insert"
    3) "getById"
    127.0.0.1:6379> SISMEMBER u07 insert
    (integer) 1
    127.0.0.1:6379>
  • 相关阅读:
    灾备架构图
    Dashboard有什么用
    第一次使用Docker的完整过程
    网页端的消息接收方式
    我理解中的应用架构
    数字化转型模型
    工业4.0的下一个十年
    一文读懂华为全屋智能一文读懂华为全屋智能
    支付总架构解析
    spring boot:shardingsphere+druid整合seata分布式事务(spring boot 2.3.3)
  • 原文地址:https://www.cnblogs.com/dalianpai/p/12520417.html
Copyright © 2011-2022 走看看