九. Redis 持久化-AOF(详细讲解说明,一个配置一个说明分析,步步讲解到位 2)

九. Redis 持久化-AOF(详细讲解说明,一个配置一个说明分析,步步讲解到位 2)

文章目录

  • 九. Redis 持久化-AOF(详细讲解说明,一个配置一个说明分析,步步讲解到位 2)
  • 1. Redis 持久化 AOF 概述
  • 2. AOF 持久化流程
  • 3. AOF 的配置
  • 4. AOF 启动/修复/恢复
  • 5. Rewrite 压缩
  • 6. AOF 持久化小结(优势 & 劣势)
  • 7. 选择 RDB 还是 AOF ?
  • 8. 最后:


1. Redis 持久化 AOF 概述

Redis 持久化-AOF 官方文档地址: https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/

AOF 是什么?

  1. AOF(Append Only File)
  2. 以日志的形式来记录每个写 操作(增量保存) ,将 Redis 执行过的所有写指令记录下来(比如 set/del 操作会记录),读操作 get 不记录)
  3. 只许追加文件但不可以改写文件
  4. Redis 启动之初会读取文件重新构建数据
  5. redis 重启的话就根据日志文件的内容将写指令从前到后执行一次,以完成对数据的恢复工作。

2. AOF 持久化流程

在这里插入图片描述

上流程图解读:

  1. 客户端的请求写命令会被 append 追加到 AOF 缓冲区内
  2. AOF 缓冲区根据 AOF 持久化策略(always,everysec,no) 将操作 sync 同步到磁盘的 AOF 文件中
  3. AOF 文件大小超过重写策略或手动重写时,会对 AOF 文件 rewrite 重写,压缩 AOF 文件容量
  4. Redis 服务重启时,会重新 load 加载 AOF 文件中的写操作达到数据恢复的目的。

3. AOF 的配置

关于 AOF 的配置和 RDB 的配置都是一样的,都是在 /etc/redis.conf 文件当中配置的。

在 redis.conf 中配置文件名称,默认为 appendonly.aof 文件,作为备份快照文件的。

在这里插入图片描述

设置为 no 将 AOF 持久化开启。

appendonly yes

在这里插入图片描述

需要将 Redis 服务器关闭,再重新启动 Redis 服务器,配置才会生效。

[root@localhost ~]# redis-server /etc/redis.conf
[root@localhost ~]# redis-cli

重点:

  • AOF 文件的保存路径,同 RDB 的路径是一致的配置,都是存储到同一个地方的。RDB 配置的路径是在哪里 ,AOF 配置的路径也就是在哪里。
  • AOF 和 RDB 同时开启,系统默认取 AOF 的数据 。当开启 AOF 后,Redis 从 AOF 文件取数据。

在这里插入图片描述

AOF 演示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

**AOF ** 只对 set[添加/修改] 和 del 操作记录下来了。

get[读]操作,并没有记录下来。

4. AOF 启动/修复/恢复

基本说明:

AOF 的备份机制和性能虽然和 RDB 不同,但是备份和恢复的操作同 RDB 一样,都是拷贝备份文件,需要恢复时再拷贝到 Redis 工作目录下,启动系统即加载。

正常恢复:

  1. 修改默认的 appendonly no ,改为 yes
  2. 将有数据的 aof 文件定时备份,需要恢复时,复制一份保存到对应目录(查看目录: config get dir )
  3. 恢复:重启 Redis 然后重新加载。
  4. 这里就演示了,和前面的 RDB 备份/恢复是一样的,大家可以移步至🌟🌟🌟

在这里插入图片描述

[root@localhost ~]# cp appendonly.aof appendonly.aof.bak # 复制拷贝

异常恢复:

  1. 如遇到 AOF 文件损坏,通过/usr/local/bin/redis-check-aof --fix appendonly.aof 进行恢复
  2. 建议先: 备份被写坏的 AOF 文件
  3. 恢复:重启 redis,然后重新加载

演示异常恢复:

这里我们将 appendonly.aof 文件进行一个刻意的修改,造成数据的异常。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

[root@localhost ~]# redis-check-aof --fix /root/appendonly.aof # 修复文件(已经是在root 目录下了)
[root@localhost ~]# ./redis-check-aof --fix appendonly.aof # 修复文件(已经是在root 目录下了,所以不用使用 /root 指定位置)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

同步频率设置:

配置位置:

在这里插入图片描述

appendfsync everysec 配置说明:

  1. appendfsync always 始终同步,每次 Redis 的写入都会立刻计入日志;性能较差但数据完整性比较好。
  2. appendfsync everysec 每秒同步,每秒记入日志一次,如果宕机,本秒的数据可能会丢失。
  3. appendfsync no 表示 Redis 不主动进行同步,把同步时机交给操作系统。更多详细内容https://baijiahao.baidu.com/s?id=1740774723808931509&wfr=spider&for=pc

5. Rewrite 压缩

  1. AOF 文件越来越大,需要定期对 AOF 文件进行重写达到压缩。
  2. 旧的 AOF 文件含有无效命令被忽略,保留最新的数据命令,比如 :set a a1;set a b1;set a c1; 保留最后一条指令就可以了。
  3. 多条写命令可以合并为一个,比如 : set a c1 b b1 c c1
  4. AOF 重写降低了文件占用空间
  5. 更小的 AOF 文件可以更快的被 Redis 加载。

重写触发配置:

  1. 手动触发:

直接调用 bgrewriteaof 命令:

127.0.0.1:6379> bgrewriteaof

在这里插入图片描述

  1. 自动触发:

在这里插入图片描述

auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

auto-aof-rewrite-min-size : AOF 文件最小重写大小,只有当 AOF 文件大小大于 该值的时候才能重写,默认配置 64MB。

auto-aof-rewrite-percentage :当前 AOF 文件大小和最后一次重写的大小之间的比率等于或者大于指定的增长百分比,比如 100 代表当前 AOF 文件时上次重写的两倍时候才重写。

注意:

  • 系统载入时或者上次重写完毕时,Redis 会记录此时 AOF 大小,设为 base_size
  • 如果 Redis 的AOF当前大小 >= base_size+base_size * 100%(默认) 当前大小 >= 64mb(默认) 的情况下,Redis 会对 AOF 进行重写。

6. AOF 持久化小结(优势 & 劣势)

优势:

  1. 备份机制更稳健,丢失数据概率更低。
  2. 可读的日志文本,通过操作 AOF 稳健,可以处理误操作

在这里插入图片描述

劣势:

  1. 比起 RDB 占用更多的磁盘空间(会记录数据和指令)
  2. 恢复备份速度比 RDB 更慢(因为每次恢复数据是重新执行我们备份在appendonly.aof 文件当中的指令,而 RDB 是存储了数据,直接拿出来,所以比 RDB 更慢一些)。
  3. 每次读写都同步的话,有一定的性能压力。

7. 选择 RDB 还是 AOF ?

选择 RDB 还是 AOF,官方文档说明: https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/
在这里插入图片描述

  • 官方推荐两个都启用
  • 如果只做缓存:如果你只希望你的数据在服务器运行的时候存在, 你也可以不使用任何持久化方式

8. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

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

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

相关文章

基于Springboot框架的学术期刊遴选服务-项目演示

项目介绍 本课程演示的是一款 基于Javaweb的水果超市管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附…

新版231普通阿里滑块 自动化和逆向实现 分析

声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 补环境逆向 部分补环境 …

java-(Oracle)-Oracle,plsqldev,Sql语法,Oracle函数

卸载好注册表,然后安装11g 每次在执行orderby的时候相当于是做了全排序,思考全排序的效率 会比较耗费系统的资源,因此选择在业务不太繁忙的时候进行 --给表添加注释 comment on table emp is 雇员表 --给列添加注释; comment on column emp.empno is 雇员工号;select empno,en…

泰山派Linux环境下自动烧录脚本(EMMC 2+16G)

脚本名字: download.sh 输入./download -h获取帮助信息 ,其中各个IMG/TXT烧录的地址和路径都在前几行修改即可 #!/bin/bash# # DownLoad.sh 多镜像烧录脚本 # 版本:1.1 # 作者:zhangqi # 功能:通过参数选择烧录指定镜…

正大杯攻略|分层抽样+不等概率三阶段抽样

首先,先进行分层抽样,确定主城区和郊区的比例 然后对主城区分别进行不等概率三阶段抽样 第一阶段,使用PPS抽样,确定行政区(根据分层抽样比例合理确定主城区和郊区行政区数量) 第二阶段,使用分…

开源智慧园区管理系统对比其他十种管理软件的优势与应用前景分析

内容概要 在当今数字化快速发展的时代,园区管理软件的选择显得尤为重要。而开源智慧园区管理系统凭借其独特的优势,逐渐成为用户的新宠。与传统管理软件相比,它不仅灵活性高,而且具有更强的可定制性,让各类园区&#…

计算机网络 应用层 笔记1(C/S模型,P2P模型,FTP协议)

应用层概述: 功能: 常见协议 应用层与其他层的关系 网络应用模型 C/S模型: 优点 缺点 P2P模型: 优点 缺点 DNS系统: 基本功能 系统架构 域名空间: DNS 服务器 根服务器: 顶级域…

人类心智逆向工程:AGI的认知科学基础

文章目录 引言:为何需要逆向工程人类心智?一、逆向工程的定义与目标1.1 什么是逆向工程?1.2 AGI逆向工程的核心目标二、认知科学的四大支柱与AGI2.1 神经科学:大脑的硬件解剖2.2 心理学:心智的行为建模2.3 语言学:符号与意义的桥梁2.4 哲学:意识与自我模型的争议三、逆向…

游戏引擎学习第86天

仓库: https://gitee.com/mrxiao_com/2d_game_2 回顾 继续之前的工作。 昨天已经让地形系统基本运行起来,但目前仍然需要进一步完善,使其能够生成更多的地块。目前的情况是,仅仅有一个地块位于中心区域,而真正需要的是让地块覆盖…

Python在线编辑器

from flask import Flask, render_template, request, jsonify import sys from io import StringIO import contextlib import subprocess import importlib import threading import time import ast import reapp Flask(__name__)RESTRICTED_PACKAGES {tkinter: 抱歉&…

力扣动态规划-20【算法学习day.114】

前言 ###我做这类文章一个重要的目的还是记录自己的学习过程,我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!! 习题 1.网格中的最小路径代价 题目链接…

从通讯工具到 AI 助理,AI手机如何发展?

随着AI进军各行各业,全面AI化时代已经到来。手机,作为现代人类的“数字器官”之一,更是首当其冲地融入了这一变革浪潮之中。 2024年年初,OPPO联合IDC发布了《AI手机白皮书》,公布OPPO已迈向AI手机这一全新阶段。到如今…

游戏引擎 Unity - Unity 打开项目、Unity Editor 添加简体中文语言包模块、Unity 项目设置为简体中文

Unity Unity 首次发布于 2005 年,属于 Unity Technologies Unity 使用的开发技术有:C# Unity 的适用平台:PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域:开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…

Qt常用控件 多元素控件

文章目录 1. QListWidget1.1 常用属性和方法1.2 常用信号1.4 例子1,操作元素 2. QTableWidget2.1 常用属性和方法2.2 常用信号2.3 例子1,创建表格3.1 常用属性和方法3.2 常用信号3.3 例子1,创建树形结构 Qt中提供的多元素控件有: QListWidget…

33.Word:国家中长期人才发展规划纲要【33】

目录 NO1.2样式​ NO3​ 图表 ​ NO4.5.6​ 开始→段落标记视图→导航窗格→检查有无遗漏 NO1.2样式 F12/另存为:Word.docx:考生文件夹样式的复制样式的修改 样式的应用(没有相似/超级多的情况下)——替换 [ ]通配符&#x…

Qt展厅播放器/多媒体播放器/中控播放器/帧同步播放器/硬解播放器/监控播放器

一、前言说明 音视频开发除了应用在安防监控、视频网站、各种流媒体app开发之外,还有一个小众的市场,那就是多媒体展厅场景,这个场景目前处于垄断地位的软件是HirenderS3,做的非常早而且非常全面,都是通用的需求&…

【零拷贝】

目录 一:了解IO基础概念 二:数据流动的层次结构 三:零拷贝 1.传统IO文件读写 2.mmap 零拷贝技术 3.sendFile 零拷贝技术 一:了解IO基础概念 理解CPU拷贝和DMA拷贝 ​ 我们知道,操作系统对于内存空间&…

全栈开发:使用.NET Core WebAPI构建前后端分离的核心技巧(一)

目录 cors解决跨域 依赖注入使用 分层服务注册 缓存方法使用 内存缓存使用 缓存过期清理 缓存存在问题 分布式的缓存 cors解决跨域 前后端分离已经成为一种越来越流行的架构模式,由于跨域资源共享(cors)是浏览器的一种安全机制,它会阻止前端应用…

《Linux服务与安全管理》| 数据库服务器安装和配置

《Linux服务与安全管理》| 数据库服务器安装和配置 目录 《Linux服务与安全管理》| 数据库服务器安装和配置 任务一: 安装PostgreSQL数据库,设置远程登录,客户端可以成功登录并操作数据库。 任务二: 安装MySQL数据库&#xf…

Linux系统之whereis命令的基本使用

Linux系统之whereis命令的基本使用 一、whereis命令介绍二、whereis命令的使用帮助2.1 whereis命令的帮助信息2.2 whereis命令帮助解释 三、whereis命令的基本使用3.1 查找命令的位置3.2 仅查找二进制文件3.3 仅查找手册页3.4 输出实际使用的查找路径3.5 指定自定义搜索路径 四…