Redis持久化、主从与哨兵集群架构

一、持久化

1、RDB持久化

RDB持久化是将数据快照的二进制文件按照配置规则存储到dump.rdb时间范围内进行多少次修改后存储到dump.rdb

如:save 60 1000 60秒内修改1000次则自动触发保存命令;

bgsave写时复制机制

子进程进行数据RDB快照持久化,此时主线程修改数据,这块数据会被复制一份生成副本,子进程会把这个副本数据写入RDB文件中;主线程仍然可以直接修改原来的数据;

Rdb持久化命令对比(后台自动执行或手动执行持久化命令):

2、AOF持久化(持久化修改命令)

RDB持久化方式如果服务器宕机,会造成数据丢失较多;而AOF持久化将命令记录到appendonly.aof中,每隔一段时间刷新到磁盘;

三种方式持久化策略: always 没执行一个命令就写入一次

everysec 每秒一次 会丢失1秒数据(推荐)

no 从不

aof方式恢复是把命令重新执行一遍;

AOF重写:AOF会根据内存中的数据重写AOF文件,提升恢复性能;(AOF重写是子进程去做类似于bgsave,默认64mb大小进行重写;默认再增加100%后重写;、

RDB与AOF对比

优先使用AOF恢复(安全)

3 Redis4.0混合持久化

前提:要开启AOF持久化

开启混合持久化会在AOF重写时不在单纯重写命令,会将前面的AOF文件重写成RDB的形式,新的命令以AOF的形式追加在后面;

二、Redis主从架构

主从复制全量原理:

主从复制部分复制(断点续传):

缓冲中如果找不到偏移量的数据,会全量进行复制;

主从复制风暴问题

多个从节点去主节点复制,主节点压力过大,可以采用如下架构;

三、Redis哨兵高可用架构

client访问哨兵集群,哨兵集群返回主节点信息;master主节点宕机,哨兵集群会选举新的从节点为主节点;

哨兵的三个定时任务:

1 哨兵每10秒会向主节点和从节点发送info命令获取最新的拓扑结构图,哨兵配置只需要配置主节点就行;

2 哨兵每隔两秒会向redis数据节点指定频道上发送该哨兵对主节点的判断,每隔哨兵也会订阅该频道;

3 每隔1秒哨兵会向主节点、从节点、奇台哨兵节点发送ping命令,做心跳;

主关下线指的是单个节点认为主节点下线,客观下线指半数以上哨兵认为下线;

哨兵选举算法采用Raft算法,详见本人文章Raft集群算法_raft 集群-CSDN博客

相关推荐
eternal__day1 分钟前
Spring Cloud 多机部署与负载均衡实战详解
java·spring boot·后端·spring cloud·负载均衡
颜淡慕潇5 分钟前
Redis 实现分布式锁:深入剖析与最佳实践(含Java实现)
java·redis·分布式
程序员秘密基地11 分钟前
基于vscode,idea,java,html,css,vue,echart,maven,springboot,mysql数据库,在线考试系统
java·vue.js·spring boot·spring·web app
何中应12 分钟前
【设计模式-5】设计模式的总结
java·后端·设计模式
吾日三省吾码30 分钟前
Spring 团队详解:AOT 缓存实践、JSpecify 空指针安全与支持策略升级
java·spring·缓存
CV点灯大师34 分钟前
C++算法训练营 Day10 栈与队列(1)
c++·redis·算法
风象南1 小时前
SpringBoot的5种日志输出规范策略
java·spring boot·后端
咖啡啡不加糖1 小时前
深入理解MySQL死锁:从原理、案例到解决方案
java·数据库·mysql
zimoyin1 小时前
Compose Multiplatform 实现自定义的系统托盘,解决托盘乱码问题
java
啾啾Fun1 小时前
【Java微服务组件】分布式协调P4-一文打通Redisson:从API实战到分布式锁核心源码剖析
java·redis·分布式·微服务·lua·redisson