Redis高可用之持久化

Redis的高可用

在集群当中有一个非常重要的指标,提供正常服务的时间的百分比(365),99.9%后面的小数点越多说明越可靠。Redis 的高可用含义更加宽泛,正常服务是指标之一,数据容量的扩展,数据的安全性。

redis中高可用技术种类

1持久化
2主从复制
3哨兵模式
4cluster集群

持久化概念

是最简单的高可用方法,主要作用是数据实现备份,也就是把redis缓存在内存中的数据保存到本地的硬盘中(冷备份)

Redis持久化的两种方式

RDB持久化redis在内存中的数据定时保存到磁盘,手动执行和自动执行
AOF持久化redis的操作日志以追加的方式写入一个AOF的文件,类似于mysql的binlog(两种恢复方式:基于位置和基于时间)

RDB的持久化

概念指在指定的时间间隔内,将内存中当前进程中的数据生成快照保存到硬盘(也叫快照持久化),用二进制压缩存储,保存的文件名的后缀是.rdb,redis启动时可以直接读取快照文件,实现数据恢复

Rdb的触发机制

手动机制:save和bgsae都可以生成RDB文件
savesave创建RDB文件时,整个redis进程会被阻塞,期间redis将无法进行读写操作,直到RDB文件创建完成为止
bgsavebgsave就是主从复制的机制,主进程通过fork机制创建一个子进程,子进程创建过程中,主进程会阻塞,子进程创建完毕后主进程解除阻塞,然后由子进程来创建RDB文件,子进程创建完成之后通知主进程更新通知

save工作流程

bgsave工作流程

自动触发机制在自动触发RDB持久化时,redis会优先选择bgsave而不是save来进行持久化
配置文件

vim /etc/redis/6379.conf

主从复制

除了文件中的save m n(m表示秒,n表示变化的次数)之外,主从复制,从节点执行全量复制操作,直接点会执行bgsave把rdb文件传送给从节点

关闭主进程shutdown之后,会自动执行rdb的持久化

启动时加载:如果启动时发现rdb文件被损坏,日志中会打印错误,redis会拒绝启动

Redis-check-rdb 修复RDB的持久化文件

Vim /etc/redis/6379.conf 配置文件Save 900 1
#219行,900秒 当时间到900秒时,redis的数据至少发生了一次变化,就执行bgsave
Save 300 10
#220行,300秒 当时间到300秒时,redis的数据至少发生了10次变化,就执行bgsave
Save 60 10000
#221行,60秒  当时间到60秒时,redis的数据至少发生了10000次变化,就执行bgsave
#数据变动越多,执行时间要越短,数据变动不大,执行时间要长一点
#生产中120秒内发生了1000次变化就执行bgsaveRdbcompression yes 
#242行,开启RDB的文件压缩功能,在高并发场景建议关闭,工作中一般都是no,关闭掉dir /var/lib/redis/6379
#264行,持久化文件的位置,可以自定义

AOF持久化

AOF持久化是将redis的每一次读写删除命令记录到一个单独的.aof为结尾的文件,查询操作则由主进程记录,当redis重启时,再次执行aof文件中的命令来恢复数据.

AOF的实时性更好,也是主流的持久化方案

Vim /etc/redis/6379.confappendonly yes
#700行,默认是no关闭的,把no改成yes开启AOF持久化的功能appendfilename "appendonly.aof" 
#704行,默认持久化的文件名,名字可以自定义.aof不能动面试题
aof-load-truncated yes
#796行,用于判断aof文件,如果被截断时的行为,设置为 yes 发现被截断(写入过程中出现异常,导致文件未能完全写入)redis会尽可能恢复文件中的数据,redis还会继续运行
#如果设置为 no 发现了文件被截断,redis将拒绝启动
#二者可根据需求来选择,如果追求数据完整性的要求高那就选择no,注重数据服务器的可用性选yes

Append 如何恢复文件

Vim /var/lib/redis/6379/appendnonly.aof

rdb是redis的默认持久化文件,但是一旦开启AOF持久化,那么redis会以AOF的持久化文件作为最高优先级

AOF的重写功能

重写的目的与意义随着时间增长,AOF文件当中的数据也会不断增加,AOF的文件也会越来越大,过大的AOF文件不仅仅会影响服务器的正常运行,也会导致数据恢复的时间过长.
什么是重写

文件重写是指定期的重写AOF文件,减少AOF文件的体积,AOF重写是把redis进程内的数据转化成写命令,同步到新的AOF文件当中(不会额外生成一个新的文件,只是在原有内容中进行压缩),同时不会对旧原有的AOF文件进行任何的读写操作。

声明:文件重写虽然是AOF持久化强烈推荐的,但不是必须的,没有重写并不影响redis启动时读取数据

在实际工作中会关闭自动的文件重写,而是通过定时任务来完成

AOF文件同步的策略三种方式

Appendfsync  always
#729行,写入过程中,立即调用redis系统的fsync操作写入到AOF文件,如果每次写入都执行同步,硬盘的性能会有瓶颈,硬盘的寿命也会大大降低,不太推荐,默认注释Appendfsync everysec
#730行,命令写入也是调用write操作,write操作结束后,线程会返回,FSYNC同步文件操作由专门的线程,每秒调用一次,这是一个这种的策略,是性能和安全性的平衡,是redis的默认配置,也是推荐配置Appendfsync no
#731行,写入操作会调用系统的write写操作,但是它不对AOF文件进行同步,操作系统来同步,同步周期30秒,文件同步的时间不可控,这时缓冲区会堆积大量数据,数据的安全也无法保证,默认注释

重写触发条件是什么

手动触发

在客户端执行命令

redis-cli bgrewriteaof

自动触发

配置文件 vim /etc/redis/6379.conf

Auto-aof-rewrite-percentage 100

Auto-aof-rewrite-min-size 64mb

手动触发工作流程

自动触发

Auto-aof-rewrite-percentage 100
#771行,文件大小超过基准的百分比,默认值为100,文件的大小超过2倍时如200时,会执行bgrewriteaof,设置为0,就是禁用自动触发,如果要使用定时任务那么要注释掉这一行Auto-aof-rewrite-min-size 64mb
#772行,表示只有文件大于基准值,才会执行重写,这个值是AOF文件执行重写的最小值,可以避免开始启动redis后,文件太小然后频繁的进行重写。

重写之后为什么能够压缩文件

1在重写过程中如果有过期的数据是不会写入文件
2无效的命令不再写入文件,无效命令是指数据被重复设置,删除的数据也不会写入
3会把多条命令合并成一个,比如对同一个键值操作sadd test 1 sadd test 2  sadd test 3 会被合并成sadd test 1 2 3
重写的作用

重写之后AOF的文件当中的命令减少了,空间也少了,恢复速度也增加了

(重写不是必须,只是推荐使用)

RDB和AOF之间的优缺点

                                      RDB
优点文件体积小,紧凑,网络传输速度很快,适合全量复制,恢复速度也比AOF要快
缺点

做不到实时的持久化,数据如此重要,是不能容忍丢失的,另外RDB需要满足特定的格式,兼容性很差,老版本的RDB不支持新版本。redis的版本一定要一致   

        5.0.7

                                       AOF
优点秒级的持久化,兼容性好,以文本格式保存的命令的方式记录,命令是通用的
缺点文件大,恢复速度慢,AOF持久化需要频繁的向磁盘写入数据,磁盘的I/O压力很大,对redis主进程的性能也会有一定的影响

实验

[root@c1 ~]# systemctl stop firewalld
[root@c1 ~]# setenforce 0
[root@c1 ~]# vim /etc/redis/6379.conf
save 60 2
#221行,修改成60秒内有2次数据修改记录
[root@c1 ~]# redis-cli     #本地登录
127.0.0.1:6379> keys *
1) "t1"
127.0.0.1:6379> set t1 2
OK
127.0.0.1:6379> set t1 3
OK
[root@c1 ~]# /etc/init.d/redis_6379 stop
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
[root@c1 ~]# /etc/init.d/redis_6379 start
Starting Redis server...
[root@c1 6379]# cd /var/lib/redis/6379/
[root@c1 6379]# ls -l
总用量 4
-rw-r--r--. 1 root root 185 11月 21 15:38 dump.rdb
[root@c1 6379]# ll
总用量 4
-rw-r--r--. 1 root root 185 11月 21 15:38 dump.rdb#在插入了两次数据后,配置文件进行了更新。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/199841.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件驱动为什么要有WHQL数字签名

硬件驱动要有WHQL数字签名才能实现正常安装、启动、运行,并实现驱动静默安装。 目前的桌面操作系统中,Windows系统市场占有率处于优势,Windows 的各个版本的系统加起来几乎占领了大部分市场。所以很多工业和行业的硬件设备都要考虑兼容在Win…

开发仿抖音APP遇到的问题和解决方案

uni-app如何引入阿里矢量库图标/uniapp 中引入 iconfont 文件报错文件查找失败 uni-app如何引入阿里矢量库图标 - 知乎 uniapp 中引入 iconfont 文件报错文件查找失败:‘./iconfont.woff?t1673007495384‘ at App.vue:6_宝马金鞍901的博客-CSDN博客 将课件中的cs…

C#的类型转换

目录 一、简介二、基本类型转换1.整数类型转换1.隐式转换2.显式转换 2.浮点类型转换1.隐式转换2.显式转换 3.字符类型转换1.字符到整数的转换2.整数到字符的转换 4.布尔类型转换1.布尔到整数的转换2.整数到布尔的转换 三、隐式转换和显式转换四、装箱和拆箱五、自定义类型转换六…

IIC通信

通信协议简述 三条线:串行数据线(SDA)、串行时钟线(SCL),地线; 半双工 一问一答 ,主从模式,多设备模式总线协议:支持多个设备进行通信(多主多从) 异步模式(串口&#xf…

起立科技(起鸿)在第25届高交会上展示透明OLED技术创新

第二十五届中国国际高新技术成果交易会 日期:2023年11月15日 地点:福田会展中心7号馆 深圳,2023年11月15日 — 起鸿科技,作为透明OLED领域的引领者,于今日参展了第二十五届中国国际高新技术成果交易会。这一展会将汇…

7 Redis的PipeLine

PipeLine的作用是批量执行命令 redis的性能瓶颈基本上是网络 import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.…

数据结构~~~~ [队列] ~~~~

文章目录 队列队列的概念与结构队列的接口实现***队列的初始化******队列的销毁******队列的插入与创建节点******队列的删除******队列的队头数据******队列的队尾数据******队列的判空*** 队列 队列的概念与结构 队列的插入数据在队尾出数据在队头(尾入头出&…

女人感染阴虱什么感觉?皮肤性病科主任谭巍全面解读

阴虱是一种常见的性传播疾病,通常由寄生虫引起,这些虱子寄生在阴部和肛门周围的毛发中。当女性感染阴虱后,可能会经历一系列的身体感觉和症状。 首先,感染阴虱的女性可能会感到阴部和肛门周围的皮肤瘙痒和不适。这种瘙痒可能会持…

MatrixOne完成与麒麟信安、欧拉的兼容互认

近日,超融合异构云原生数据库MatrixOne企业版软件V1.0完成了与欧拉开源操作系统(openEuler简称“欧拉”)、麒麟信安操作系统系列产品和虚拟化平台的相互兼容认证,通过了欧拉兼容性测评,获得了《openEuler技术测评证书》…

Python机器学习、深度学习提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…

深度学习之自监督模型汇总

1.BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding paper:https://arxiv.org/pdf/1810.04805v2.pdf code:GitHub - google-research/bert: TensorFlow code and pre-trained models for BERT Abstract:我们引入了一种名为 BE…

如何在虚拟机的Ubuntu22.04中设置静态IP地址

为了让Linux系统的IP地址在重新启动电脑之后IP地址不进行变更,所以将其IP地址设置为静态IP地址。 查看虚拟机中虚拟网络编辑器获取当前的子网IP端 修改文件/etc/netplan/00-installer-config.yaml文件,打开你会看到以下内容 # This is the network conf…

ACREL DC energy meter Application in Indonesia

安科瑞 华楠 Abstract: This article introduces the application of Acrel DC meters in base station in Indonesia.The device is measuring current,voltage and energy together with hall current sensor. 1.Project Overview This company is located in Indonesia a…

基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码

基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于模拟退火算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于模拟退火优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

城市交通领域的新趋势:地铁列车可视化

随着城市化进程的不断加速,地铁作为一种便捷、快速的城市交通方式,受到了越来越多人的青睐。地铁列车可视化,作为地铁运营管理中的一项重要工作,不仅可以提高列车运行效率和安全性,还可以为乘客提供更加舒适、便捷的乘…

小众市场:探索跨境电商中的利基领域

随着全球数字化和互联网的普及,跨境电子商务已经成为了一个蓬勃发展的产业。从亚马逊到阿里巴巴,大型电商平台已经占据了很大一部分市场份额。 然而,在这个竞争激烈的领域,寻找小众市场和利基领域可能是一种成功的策略。本文将探…

十六、RabbitMQ快速入门

目录 一、在centos上下载MQ镜像 二、安装运行容器 三、登录进入MQ 1、添加一个新的用户 2、新建虚拟机 3、 为用户分配权限 四、RabbitMQ的基本概念 RabbitMQ中的几个概念: 五、常见消息模型 六、简单的消息生产与消费 1、消费者类 2、生产者类 3、基本消息队列的消…

Adobe 2022,2023,2024永久安装包全家桶下载网盘下载和最全的安装教程!

收集整理:Adobe合集 最新:已更新到2024 资源包含:AE Adobe AE2022是一个非常强大的视频制作和后期制作软件,它可以让您制作出非常出色的电影特效、动画和其他非常优秀的视频作品。为了更好地使用这款软件,我们需要一些比较全面…

基于单片机的空气质量实时监测系统(论文+源码)

1. 系统设计 通过文献和市场调查,本设计的实现方案框架是以单片机为核心控制处理器搭建外围的功能模块如温度传感器模块、湿度传感器检测模块、二氧化碳传感器检测设备模块、无线通信模块和蜂鸣器声光报警提示模块来实现,辅以显示模块来展示。 该系统通…

GPU Microarch 学习笔记【3】Tensor Core

目录 1. 指令与架构 2. Load 3. 计算MMA 4. Set, Step 与thread group 5. OCTET 6. Tensor Core微架构 7. Final Nvidia自从Volta/Turing(2018)架构开始,在stream multi processor中加入了tensor core,用于加速矩阵计算。如…