zoukankan      html  css  js  c++  java
  • Redis学习第二天

    Redis学习2

    list 类型数据扩展操作

    移除指定数据

    lrem key count(数量) value
    

    小结1: redis 应用于具有操作先后顺序的数据控制

    list 类型数据操作注意事项

    • list中保存的数据都是string类型的,数据总容量是有限的,最多2 32 - 1 个元素 (4294967295)。
    • list具有索引的概念,但是操作数据时通常以队列的形式进行入队出队操作,或以栈的形式进行入栈出栈操作
    • 获取全部数据操作结束索引设置为-1
    • list可以对数据进行分页操作,通常第一页的信息来自于list,第2页及更多的信息通过数据库的形式加载

    list 类型应用场景

    业务场景

    twitter、新浪微博、腾讯微博中个人用户的关注列表需要按照用户的关注顺序进行展示,粉丝列表需要将最 近关注的粉丝列在前面

    解决方案

    • 依赖list的数据具有顺序的特征对信息进行管理

    • 使用队列模型解决多路信息汇总合并的问题

    • 使用栈模型解决最新消息的问题

    小结2:redis 应用于最新消息展示

    set

    set 类型

    • 新的存储需求:存储大量的数据,在查询方面提供更高的效率
    • 需要的存储结构:能够保存大量的数据,高效的内部存储机制,便于查询
    • set类型:与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的

    set 类型数据的基本操作

    添加数据

    sadd key member1 [member2]
    

    获取全部数据

    smembers key 
    

    删除数据

    srem key member1 [member2]
    

    获取集合数据总量

    scard key
    

    判断集合中是否包含指定数据

    sismember key member
    

    set 类型数据的扩展操作

    随机获取集合中指定数量的数据

    srandmember key [count]
    

    随机获取集合中的某个数据并将该数据移出集合

    spop key [count]
    

    小结3

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

    求两个集合的交、并、差集

    sinter key1 [key2]
    sunion key1 [key2]
    sdiff key1 [key2]
    

    求两个集合的交、并、差集并存储到指定集合中

    sinterstore destination key1 [key2]
    sunionstore destination key1 [key2]
    sdiffstore destination key1 [key2] 
    

    将指定数据从原始集合中移动到目标集合中

    smove source destination member 
    

    小结4

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

    set 类型数据操作的注意事项

    • set 类型不允许数据重复,如果添加的数据在 set 中已经存在,将只保留一份 set 类型数据操作的注意事项
    • set 虽然与hash的存储结构相同,但是无法启用hash中存储值的空间

    set 类型应用场景

    业务场景

    公司对旗下新的网站做推广,统计网站的PV(访问量),UV(独立访客),IP(独立IP)。 PV:网站被访问次数,可通过刷新页面提高访问量 UV:网站被不同用户访问的次数,可通过cookie统计访问量,相同用户切换IP地址,UV不变 IP:网站被不同IP地址访问的总次数,可通过IP地址统计访问量,相同IP不同用户访问,IP不变

    解决方案

    • 利用set集合的数据去重特征,记录各种访问数据
    • 建立string类型数据,利用incr统计日访问量(PV)
    • 建立set模型,记录不同cookie数量(UV)
    • 建立set模型,记录不同IP数量(IP)

    小结5: redis 应用于同类型数据的快速去重

    sorted_set 类型

    1. 需要的存储结构:新的存储模型,可以保存可排序的数据
    2. sorted_set类型:在set的存储结构基础上添加可排序字段

    sorted_set 类型数据的基本操作

    添加数据

    zadd key score1 member1 [score2 member2]
    

    获取全部数据

    zrange key start stop [WITHSCORES]
    zrevrange key start stop [WITHSCORES]
    

    删除数据

    zrem key member [member ...]
    

    按条件获取数据

    zrangebyscore key min max [WITHSCORES] [LIMIT]
    zrevrangebyscore key max min [WITHSCORES]
    

    条件删除数据

    zremrangebyrank key start stop
    zremrangebyscore key min max
    

    重要提示:

    1. min与max用于限定搜索查询的条件
    2. start与stop用于限定查询范围,作用于索引,表示开始和结束索引
    3. offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量

    获取集合数据总量

    zcard key
    zcount key min max
    

    集合交、并操作

    zinterstore destination numkeys key [key ...]
    zunionstore destination numkeys key [key ...]
    
  • 相关阅读:
    对象存储、块存储、文件系统存储概念与区别
    一款线程安全、基本功能齐全的STL
    Libevent源码分析—event_base_dispatch()
    Libevent源码分析—event_add()
    Libevent源码分析—从使用Libevent库开始
    Libevent源码分析—event_set()
    Libevent源码分析—event_init()
    利用Elasticsearch搭建全球域名解析记录
    Mysql Order By注入总结
    解决在ubuntu下requests 无法找到模块packages
  • 原文地址:https://www.cnblogs.com/zzy8080/p/13923683.html
Copyright © 2011-2022 走看看