概述
NoSQL
定义
:Not only SQL,非关系型数据库特点
- 非结构化:没有表结构,没有对每一项数据的具体定义,数据结构不固定
- 无关联:数据之间没有直接联系
- 非 SQL:查询时使用的不是结构化查询语句
- 内存存储:数据存储在内存中,查询效率特别高
- 水平扩展性
适用场景
- 数据结构不固定
- 对一致性、安全性要求不高
- 对性能要求高
Redis
定义
:Remote Dictionary Server,远程词典服务器,一种基于内存的键值型 NoSQL 数据库特点
- Key-Value :value 支持多种不同数据结构,功能丰富
- 单线程:每个命令具备原子性,线程安全
- 低延迟,速度快:基于内存,IO 多路复用,良好的编码
- 支持数据持久化
- 支持主从集群、分片集群
功能
- 在 mySQL 基础上加了三级缓存,减少 mySQL 的磁盘 I/O 操作
- 支持多种数据结构
缓存
一、缓存量控制
- 定时删除
- 惰性删除
- 内存淘汰
- 缓存击穿解决方案 : 过期时间均匀分布
- 缓存雪崩解决方案 : 热点数据永不过期
二、缓存持久化
- RDB 持久化方案
- 原理 : 通过备份 redis 的写入命令来执行恢复操作
- AOF 持久化方案
- 原理 : 通过指令压缩来压缩 AOF 文件(AOF重写)
高可用
一、主从模式
-
主节点(master) : 负责写数据
-
从结点(slave) : 负责读数据
-
实现原理
- 主从结点进行 RDB 文件的数据同步,通过读写分离提高性能
- 若主节点崩溃,则从结点替代主节点功能继续工作
-
崩溃后的备份机制
-
主节点崩溃 : 设置管理员(哨兵)结点,如果多个 (具体几个由用户自定义) 管理员判定一个结点掉线了,才判定为下线
-
从结点崩溃 : 使用复制偏移量来确定从结点已完成的数据备份,避免崩溃后需要从头备份全部缓存
复制偏移量 : 一个用来确定 master-slave 之间数据备份进度的游标
-
-
故障转移机制
- 选择新的主节点
- 设置其他从结点从新的主节点同步数据
- 设置旧主节点为从结点
-
新节点选择标准
- 硬件配置高的优先
- 断开主节点时间短的优先 (数据最新)
- 复制偏移量大的优先 (数据最全)