zoukankan      html  css  js  c++  java
  • Redis 简介

    关系型数据库存在的问题

    • 性能瓶颈:磁盘IO性能低下
    • 扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群

    解决思路

    • 降低磁盘IO次数,越低越好 —— 内存存储
    • 去除数据间关系,越简单越好 —— 不存储关系

    内存存储+不存储关系也就是 NoSQL 了

    NoSQL

    NoSQL:即 Not-Only SQL(泛指非关系型的数据库),作为关系型数据库的补充(数据的存储最终还是要落到硬盘上,全部放到内存中不可行)。

    场景:应对基于海量用户和海量数据前提下的数据处理问题(数据量不大 MySQL 就可以解决)

    特征:

    • 可扩容,可伸缩
    • 大数据量下高性能
    • 灵活的数据模型
    • 高可用

    常见的 NoSQL 数据库:

    • Redis
    • memcache
    • Hbase
    • MongoDB

    解决方案(电商场景)

    1. 商品基本信息——放入MySQL

      • 名称
      • 价格
      • 厂商
    2. 商品附加信息——放入MongoDB(这部分属于文档处理)

      • 描述
      • 详情
      • 评论
    3. 图片信息——放入分布式文件系统

    4. 搜素关键字——ES、Lucene、solr

    5. 热点信息——Redis、memcache、tair

      • 高频
      • 波段性

    Redis

    概念:Redis(REmote Dictionary Server)使用C语言开发的一个开源的高性能键值对(key-value)数据库。

    特征:

    1. 数据间没有必然的关联关系
    2. 内部采用单线程机制进行工作
    3. 高性能。官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s
    4. 多数据类型支持
      • 字符串类型 string
      • 列表类型 list
      • 散列类型 hash
      • 集合类型 set
      • 有序集合类型 sorted_set
    5. 持久化支持。可以进行输入灾难恢复

    Redis 与业务

    作为缓存使用

    1.原始业务功能设计

    • 秒杀
    • 618活动
    • 双11活动
    • 排队购票

    2.运营平台监控到的突发高频访问数据

    • 突发时政要闻,被强势关注围观

    3.高频、复杂的统计数据

    • 在线人数
    • 投票排行榜

    附加功能

    系统功能优化或升级

    • 单服务器升级集群
    • Session 管理
    • Token 管理

    根据以上的业务情况,redis 常用的数据类型有 5 种(string,hash,list,set,sorted_set),但实际上比 5 种多。

    Redis 应用总结

    • 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等
    • 任务队列,如秒杀、抢购、购票排队等
    • 即时信息查询,如各位排行榜、各类网站访问统计、公交站到站信息、在线人数信息(聊天室、网站)、设备信号等
    • 时效性信息控制,如验证码控制、投票控制等
    • 分布式数据共享,如分布式集群架构中的 session 分离
    • 消息队列
    • 分布式锁
  • 相关阅读:
    设计模式命令模式(Command)
    设计模式责任链模式(COR)
    设计模式备忘录模式(Memento)
    设计模式中介者模式(Mediator)
    设计模式策略模式(Strategy)
    设计模式解释器模式(Interpreter)
    设计模式迭代器模式(Iterator)
    设计模式状态模式(State)
    Ext终于开始收费了
    设计模式观察者模式(Observer)
  • 原文地址:https://www.cnblogs.com/wuyongqiang/p/12640138.html
Copyright © 2011-2022 走看看