Redis - 概述

41 阅读2分钟

概述

参考资料: 我是Redis,MySQL大哥被我坑惨了! - YouTube

NoSQL

  1. 定义:Not only SQL,非关系型数据库

  2. 特点

    1. 非结构化:没有表结构,没有对每一项数据的具体定义,数据结构不固定
    2. 无关联:数据之间没有直接联系
    3. 非 SQL:查询时使用的不是结构化查询语句
    4. 内存存储:数据存储在内存中,查询效率特别高
    5. 水平扩展性
  3. 适用场景

    1. 数据结构不固定
    2. 对一致性、安全性要求不高
    3. 对性能要求高

Redis

  1. 定义:Remote Dictionary Server,远程词典服务器,一种基于内存的键值型 NoSQL 数据库

  2. 特点

    1. 键值存储 :数据以 Key-Value 的形式存储,value 支持多种不同数据结构,功能丰富
    2. 单线程:每个命令具备原子性,线程安全
    3. 低延迟,速度快:基于内存,IO 多路复用,良好的编码
    4. 支持数据持久化
    5. 支持主从集群、分片集群

功能

  1. 在 mySQL 基础上加了三级缓存,减少 mySQL 的磁盘 I/O 操作 image.png
  2. 支持多种数据结构

缓存

一、缓存量控制

  1. 定时删除
  2. 惰性删除
  3. 内存淘汰
  4. 缓存击穿解决方案 : 过期时间均匀分布
  5. 缓存雪崩解决方案 : 热点数据永不过期

二、缓存持久化

  1. RDB 持久化方案:原理是通过备份 redis 的写入命令来执行恢复操作
  2. AOF 持久化方案:原理是通过指令压缩来压缩 AOF 文件(AOF重写)

高可用:主从模式

  1. 主节点(master) : 负责写数据

  2. 从结点(slave) : 负责读数据

  3. 实现原理

    1. 主从结点进行 RDB 文件的数据同步,通过读写分离提高性能
    2. 若主节点崩溃,则从结点立即替代主节点功能继续工作
  4. 崩溃后的备份机制

    1. 主节点崩溃 : 设置管理员(哨兵)结点,如果多个 (具体几个由用户自定义) 管理员判定一个结点掉线了,才判定为下线

    2. 从结点崩溃 : 使用复制偏移量来确定从结点已完成的数据备份,避免崩溃后需要从头备份全部缓存

      复制偏移量 : 一个用来确定 master-slave 之间数据备份进度的游标 image.png

  5. 故障转移机制

    1. 选择新的主节点
    2. 设置其他从结点从新的主节点同步数据
    3. 设置旧主节点为从结点
  6. 新节点选择标准

    1. 硬件配置高的优先
    2. 断开主节点时间短的优先 (数据最新)
    3. 复制偏移量大的优先 (数据最全)