• Redis入门到精通(五)——Set类型数据的基本操作、Set类型数据的扩展操作(随机操作数据、交并集操作)、Set类型数据操作的注意事项、Set类型应用场景(进行去重)


    set类型结构

    list类型也能存储很多数据,为什么还要有set类型呢?因为list是基于双向链表的底层结构,查询时候比较慢。

    类似于hash类型,但是没有hash中的value,hash中的field当成set的value

    一、set类型数据的基本操作

    添加数据   sadd key member1  member2 ...
    获取全部数据    smembers key
    删除数据    srem key member1   member2 ...
    获取集合数据总量 scard key
    判断集合中是否包含指定数据 sismember key member #如果存在返回1,不存在返回0

    二、set类型数据的扩展操作

    1.业务场景:使用set随机操作数据

    Redis应用于随机推荐类信息检索,例如热点歌单推荐,热点新闻推荐,应用推荐等等

     

    随机获取集合中指定数量的数据       srandmember key count           #count指获取数据的个数
    随机获取集合中的某个数据并将该数据移除集合   spop key 

    2.业务场景:set数据交并差操作

    Redis应用于同类信息的关联搜索,二度关联搜索,深度关联搜索(显示共同关注,共同好友)

    求两个集合的交、并、差集
    sinter key1 key2
    sunion  key1 key2
    sdiff key1 key2
    
    求两个集合的交、并、差集合并存储到指定集合中
    sinterstore destination key1 key2       #sinterstore u3 u1 u2   将u1,u2的交集放到u3中
    sunionstore  destination key1 key2
    sdiffstore destination key1 key2
    
    将指定数据从原始集合中移动到目标集合中
    smove source destination member     #smove u2 u1 a  将u2中的a移动到u1中

    三、Set类型数据操作的注意事项

    四、Set类型应用场景

    1.业务场景:多个角色进行权限的去重并集

    解决方案

    当一个用户存在多个角色,并且每个角色包含多个权限,快速进行权限校验:去除不同角色相同的权限

    给角色rid:001设置权限getall/getById
    给角色rid:002设置权限getCount/getall/insert
    
    将两个角色相同的权限放进一个新的set中uid:007,求并集

    2.业务场景:统计网站的PV(访问量),UV(独立访客,cookie值),IP(独立IP)

    解决方案

    利用set对同类数据进行去重

  • 相关阅读:
    信息安全学习笔记1
    Linux学习笔记4------磁盘分区(问答形式)
    Linux学习笔记3-------添加磁盘并分区
    用for循环打印三角形
    包机制
    运算符
    变量、常量、作用域
    数据类型转换
    数据的基本类型
    Java运行原理的简单理解
  • 原文地址:https://www.cnblogs.com/wangcuican/p/12865081.html
Copyright © 2020-2023  润新知