一.Redis概述

本文最后更新于:2022年1月13日 下午

一.Redis概述

1. 数据库发展演变

  1. 单机Mysql的年代:

    1

    起初网站访问量并不是很大,单个数据库就可以满足需求,且当时更多的使用静态网页Html,服务器并没有很大的压力,但是可能存在很多瓶颈:

    • 数据量如果太大,一个机器放不下
    • 数据的索引(B+ Tree),一个机器的内存也放不下
    • 访问量(读写混合),一个服务器承受不了

    出现以上问题的话,单机模式无法解决。

  2. Memcached(缓存)+Mysql+垂直拆分(读写分离)

    2

    我们采用读写分离,由一个库来进行写数据,其他数据库同步写库的数据,提供读数据服务。

    当网站大部分时候都是在读时,每次都要查询数据库的话就很麻烦,因此希望减轻数据库的读压力,我们可以使用缓存(Cache)来缓解读压力。

    发展过程:优化数据结构和索引—>文件缓存(但文件读写(IO)压力增大,也会降低效率)—>Memchched(当时的热门技术)。

  3. 分库分表 + 分库分表 + Mysql集群

    3

    尽管实现了分库分表,但是由于数据类型,数据量的增加(地图定位,音乐,热榜等数据)

    Mysql等关系型数据库就不够用了,数据量很多,变化很大,例如给一个10万行的数据增加一个列属性,将需要修改所有10万条数据。

    如果使用Mysql来存储比较大的文件,博客,图片等,数据库的表将会变得很大,效率也会降低,如果有一种数据库专门来处理这种数据,Mysql的压力就会变得十分小。

  4. 当前时代的互联网项目

    4

2. 什么是NoSQL?

2.1 NoSQL定义

​ NoSQL = Not Only SQL(不仅仅是SQL)

​ 泛指非关系型数据库,随着Web2.0互联网的诞生,传统的关系型数据库很难应对Web2.0时代。尤其是超大规模的高并发社区,暴露出 很多难以克服的问题。NoSQL在当今大数据环境下发展十分迅速,Redis是发展最快的,也是我们当下必须要掌握的技术。

​ 很多数据类型用户的个人信息,社交网络,地理位置,这些数据类型的存储不需要一个特定的格式,不需要多少的操作就可以横向扩展 的。例如可以使用Map<String,Object>键值对来存储。而关系型数据库中的数据一般以表格的形式存在,具有固定的行和列。

2.2 NoSQL特点

解耦!

  1. 方便扩展(数据之间没有关系,很好扩展)

  2. 大数据量的高性能(Redis一秒写8万次,读取11万次,NoSQL的缓存记录级,是一种细粒度的缓存,性能会比较高)

  3. 数据类型是多样性的(不需要实现设计数据库,随取随用,如果数据量很大,设计表结构是很难的)

  4. 传统RDBMS与NoSQL的对比

    1
    2
    3
    4
    5
    6
    7
    8
    传统的RDBMS:
    - 结构化组织
    - SQL
    - 数据与关系都存储在单独的表中
    - 具有操作语言,数据定义语言
    - 严格的一致性
    - 基础的事务
    - ......
    1
    2
    3
    4
    5
    6
    7
    8
    NoSQL:
    - 不仅仅是数据
    - 没有固定的查询语言,可以定义语法
    - 键值对存储,列存储,文档存储,图形数据库(社交关系存储)
    - 最终一致性
    - CAP定理和BASE(异地多活)
    - 高性能,高可用,高可扩展
    - .....
  5. 3v:海量,多样,实时(大数据时代面临的问题)

    3高:高并发,高可扩,高xingneng

3. NoSQL四大分类

  1. KV键值对:Redis,Tair,Memcached….

  2. 文档型数据库(bson格式,与json相同):

    • MongoDB:
      • 一个基于分布式文件存储的数据库,c++编写,主要用于处理大量的文档。
      • 一个介于关系型数据库和非关系型数据库中间的产品,是非关系行数据库中功能最丰富,最像关系型数据库的。
    • ConthDB
  3. 列存储数据库:HBase,分布式文件系统

  4. 图关系数据库(使用图结构存储关系)

    5

四种类型对比:

6

4. Redis简介

  • Redis(Remote Dictionary Server),远程字典服务。

  • 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

  • 功能

    • 内存存储,持久化,内存中是断电即失,因此需要做持久化(rbd,aof ???)
    • 效率高,可用于高速缓存
    • 发布订阅系统
    • 地图信息分析
    • 计时器,计数器(统计浏览量…)
    • ……
  • 特性

    • 多样的数据类型
    • 持久化
    • 集群
    • 事务
    • …….
  • 参考

  • 一般在Linux服务器上部署Redis


本文作者: ziyikee
本文链接: https://ziyikee.fun/2021/11/09/Redis%E6%A6%82%E8%BF%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!