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 分离
  • 消息队列
  • 分布式锁
posted @ 2020-04-06 00:23  黄土地上的黑石头  阅读(151)  评论(0编辑  收藏  举报