Redis持久化模式RDB与AOF
RDB持久化
RDB也被叫做Redis数据快照。简单来说就是把内存中的所有数据记录到磁盘中。当Redis实例故障重启后重磁盘中读取快照文件进行数据恢复(快照文件默认保存在当前运行目录);
演示Redis正常停机自动执行一次RDB操作
配置Redis触发RDB机制
RDB其它配置也可在redis.conf中设置
是否对RDB文件进行压缩
建议不开启,压缩RDB会消耗CPU资源相较于磁盘来比CPU资源更宝贵
修改RDB文件名
前面正常关闭Redis会自动去执行一次RDB操作,生成的文件名为dump.rdb,我们可在此对生成rdb文件的名称进行修改
可在此修改生成rdb的文件名
修改文件保存路径
如上生成的rdb文件默认保存在Redis根目录中,可修改此处路径更改rdb/aof文件的保存路径。后续Redis宕机或重启时Redis会读取此路径和上面配置好的rdb/aof文件名去恢复数据;
说明:
xxx.rdb或xxx.aof文件都会存放在此配置的目录中;
RDB总结
RDB的save和bgsave区别?
save和bgsave都是Redis用来生成rdb文件的命令。区别在于save命令是Redis主线程去执行生成/保存RDB文件等一系列操作,因为Redis是单线程的所以在使用save命令生成RDB文件期间Redis是不会处理其它客户的任何请求;bgsave命令是fork的Redis主进程得到一个新的子进程去做RDB的生成/保存操作(bgsave的fork主进程生成子进程的操作会短暂阻塞)但后续最耗时的操作 RDB生成/保存操作都是由子进程去处理的不会阻塞主进程处理其它客户端请求。
特别说明
1.Redis正常退出执行的RDB使用的是save命令;
2.Redis.conf中配置的RDB触发机制使用的是bgsave命令;
RDB方式bgsave基本流程
1.fork主进程得到一个子进程,共享主进程内存空间;
2.子进程读取内存数据并写入新的RDB文件;
3.用新的RDB文件替换旧的RDB文件;
RDB会在什么时候执行?save 60 1000代表什么含义?
RDB什么时候执行及save 60 1000含义
1.正常停止Redis服务时自动执行一次RDB;
2.触发了在redis.conf中配置的RDB触发机制时会执行,如save 600 1000即600秒内至少执行了1000次修改操作时会执行一次RDB;
RDB缺点
1.RDB执行间隔时间长,容易造成数据丢失;
以配置save 600 1000为例:
即600秒内至少发生1000次修改操作时触发RDB。假如程序执行到500秒时执行了
999次写入操作差一次写入操作就执行RDB,若此时Redis服务器宕机。则前面999
次修改操作都会丢失;
2.fork主进程、压缩、写出RDB文件都比较耗时;
AOF持久化
AOF全称为Append Only File(追加文件),Redis处理的每一个写命令都会记录在AOF文件中,AOF可以看做是命令日志文件(AOF默认是关闭的);
修改配置文件开启AOF
编辑reids.conf文件开启AOF 及修改AOF文件名称
修改AOF记录频率
always:
每执行一次写命令,立即记录到AOF文件;
everysec:
写命令执行完先放入AOF缓冲区,然后每隔1秒将缓冲区中的数据写入到AOF文件中去
(推荐使用,最多丢失1秒的数据);
no:
写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区中的数据写到AOF文件;
查看AOF是否生效
1.开启AOF模式
2.启动Reids服务端
3.写入测试数据
4.Ctrl + C关闭Redis服务端
5.观察生成的AOF文件
5.1.生成的AOF文件
5.2.AOF文件记录的Redis命令
5.启动Redis服务端
bgrewriteaof命令
AOF因为记录的是Redis的命令,AOF文件一般要比RDB大得多,而且AOF会记录对同一个Key的多次写操作,对同一个Key的多次写操作只有最后一次才是有意义的。可以通过执行bgrewriteaof命令让AOF文件执行重写功能减小AOF文件体积(类似于执行重写后会去掉AOF文件中那些无意义的命令)
配置AOF文件重写阈值
在redis.conf文件中配置AOF文件重写阈值
配置项
# AOF文件比上次文件 增长超过多少百分比时触发重写;
auto-aof-rewrite-percentage 100
# AOF文件至少多大以上才出发重写;
auto-aof-rewrite-min-size 64mb
说明
如上两个配置项是并且的关系,即AOF至少超过64mb 且 AOF文件比上次文件增长超过
100%时触发重写;
RDB与AOF对比
其它补充
若同时配置了RDB和AOF,Redis优先重AOF中读取并恢复Redis数据,因为AOF的数据完整性更高;
有了AOF配置每秒刷盘(最多丢失1秒的数据)还有必要配置RDB吗?
如果追求数据的极致安全就有必要,此时配置的RDB就充当一个备份的作用,把数据备份到磁盘或者拷贝一份RDB数据放在别的机器或机房去(因为RDB比AOF文件体积要小恢复速度更快更适合做异地备份),起到一个异地容灾的作用;
相关文章:

Redis持久化模式RDB与AOF
RDB持久化 RDB也被叫做Redis数据快照。简单来说就是把内存中的所有数据记录到磁盘中。当Redis实例故障重启后重磁盘中读取快照文件进行数据恢复(快照文件默认保存在当前运行目录); 演示Redis正常停机自动执行一次RDB操作 配置Redis触发RDB机制 RDB其它配置也可在red…...
【JS进阶】ES5 实现继承的几种方式
ES5 实现继承的几种方式 1. 原型链继承(Prototype Chaining) function Parent(name) {this.name name || Parent;this.colors [red, blue]; }Parent.prototype.sayName function() {console.log(this.name); };function Child() {}// 关键ÿ…...

【数据结构】树形结构--二叉树(二)
【数据结构】树形结构--二叉树(二) 一.二叉树的实现1.求二叉树结点的个数2.求二叉树叶子结点的个数3.求二叉树第k层结点的个数4.求二叉树的深度(高度)5.在二叉树中查找值为x的结点6.判断二叉树是否为完全二叉树7.二叉树的销毁 一.…...
JavaScript性能优化实战:深入探讨JavaScript性能瓶颈与优化技巧
引言:为什么JavaScript性能至关重要 在现代Web开发中,JavaScript已成为构建交互式应用程序的核心技术。随着单页应用(SPA)和复杂前端架构的普及,JavaScript代码的性能直接影响用户体验、转化率甚至搜索引擎排名。研究表明,页面加载时间每增加1秒,转化率可能下降7%,而性能…...
在 CentOS 上将 Ansible 项目推送到 GitHub 的完整指南
1. 安装 Git 在 CentOS 中使用 yum 安装 Git,Git 是管理代码版本控制的工具: sudo yum install git -y 2. 配置 Git 用户信息 设置你的 Git 用户名和邮箱,这些信息会出现在你每次提交的记录中: git config --global user.nam…...

深度学习题目1
梯度下降法的正确步骤是什么? a.计算预测值和真实值之间的误差 b.重复迭代,直至得到网络权重的最佳值 c.把输入传入网络,得到输出值 d.用随机值初始化权重和偏差 e.对每一个产生误差的神经元,调整相应的(权重ÿ…...
Spring @Scheduled vs XXL-JOB vs DolphinScheduler vs Airflow:任务调度框架全景对比
引言 从单机定时任务到分布式工作流调度,不同场景需要选择匹配的调度框架。 本文对比 Spring Scheduled、XXL-JOB、DolphinScheduler (海豚调度器)和 Apache Airflow 的核心差异,助你避免过度设计或功能不足。 一、核心定位与适用…...

【Oracle】锁
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 锁基础概述1.1 锁的概念与作用1.2 锁的工作原理1.3 Oracle锁的分类 2. 行级锁 (Row-Level Locks)2.1 行级锁的基本概念2.1.1 TX锁(事务锁)2.1.2 行级锁的工作机制 2.2 行级锁的类型2.…...
共识算法Raft系列(1)——什么是Raft?
Raft 算法是一种分布式一致性算法,由 Diego Ongaro 和 John Ousterhout 在 2014 年提出,旨在解决 Paxos 算法复杂且难以理解的问题。Raft 设计目标是易于理解和实现,同时提供强一致性(CAP 中的 CP 系统),广…...

JS逆向爬虫教程与实战技巧
想要一个关于爬虫JS逆向的详细教程。这是一个很专业的技术需求,最近有个可能是正在学习爬虫技术的开发者或者数据分析师,遇到了需要破解JavaScript加密的反爬机制的问题,想让我出一期实战教程,话不多说,开干。 以下是我…...
Neovim - LSP 底层原理,难点配置(二)
Neovim LSP 的工作原理 基本概念 LSP(Language Server Protocol)可以理解成是一个"语言助手"。每种编程语言都有自己的"语言助手"(比如 TypeScript 的 tsserver),这些助手能告诉你: 哪写错了(语法错误)哪能跳转(方法定义,引用)哪可以补全(自…...

【Redis】Redis 的常见客户端汇总
目录 一、命令行客户端 二、图形界面的客户端 三、Java 客户端 3.1 SpringDataRedis 3.2 Jedis 3.2.1 连接池的配置 3.3 Lettuce 3.3.1 RedisTemplate 工具类实现 3.3.2 自定义序列化器 3.3.3 StringRedisTemplate 3.3.4 集群配置 3.3.4.1 刷新节点集群拓扑动态感应…...

关于akka官方quickstart示例程序(scala)的记录
参考资料 https://doc.akka.io/libraries/akka-core/current/typed/actors.html#first-example 关于scala语法的注意事项 extends App是个语法糖,等同于直接在伴生对象中编写main 方法对象是通过apply方法创建的,也可以通过对象的名称单独创建&#x…...

2025年渗透测试面试题总结-腾讯[实习]玄武实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]玄武实验室-安全工程师 1. 自我介绍 2. CSRF原理 3. Web安全入门时间 4. 学习Web安全的原因 …...

网站首页菜单两种布局vue+elementui顶部和左侧栏导航
顶部菜单实现 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Vue.js Element UI 路由导航</…...
AWS之迁移与传输服务
目录 一、迁移管理与规划类 二、应用程序迁移类 1. MGN的迁移范围(能替代的场景) ✅ 自动包含以下数据: 🔹 适用场景举例: 2. 仍需DMS或DataSync的场景(不可替代) ❌ DMS仍必要的情况: ❌ DataSync仍必要的情况: 3. 技术原理对比 MGN的数据迁移机制: DMS…...

@Builder的用法
Builder 是 Lombok 提供的一个注解,用于简化 Java 中构建对象的方式(Builder 模式)。它可以让你以更加简洁、链式的方式来创建对象,尤其适用于构造参数较多或部分可选的类。...
Unity3D 逻辑代码性能优化策略
前言 在Unity3D中优化逻辑代码性能是提升游戏流畅度的关键。以下是系统性的优化策略和示例: 对惹,这里有一个游戏开发交流小组,希望大家可以点击进来一起交流一下开发经验呀! 1. 避免高频操作中的开销 缓存组件引用 private …...
【Python Cookbook】文件与 IO(二)
文件与 IO(二) 6.字符串的 I/O 操作7.读写压缩文件8.固定大小记录的文件迭代(⭐⭐) 6.字符串的 I/O 操作 你想使用操作类文件对象的程序来操作文本或二进制字符串。 使用 io.StringIO() 和 io.BytesIO() 类来创建类文件对象操作…...

vue实现点击按钮input保持聚焦状态
主要功能: 点击"停顿"按钮切换对话框显示状态输入框聚焦时保持状态点击对话框外的区域自动关闭 以下是代码版本: <template><div class"input-container"><el-inputv-model"input"style"width: 2…...

[蓝桥杯]取球博弈
取球博弈 题目描述 两个人玩取球的游戏。 一共有 NN 个球,每人轮流取球,每次可取集合 n1,n2,n3n1,n2,n3中的任何一个数目。 如果无法继续取球,则游戏结束。 此时,持有奇数个球的一方获胜。 如果两人都是奇数ÿ…...
Spring Security入门:创建第一个安全REST端点项目
项目初始化与基础配置 创建基础Spring Boot项目 我们首先创建一个名为ssia-ch2-ex1的空项目(该名称与配套源码中的示例项目保持一致)。项目需要添加以下两个核心依赖: org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-secur…...

[Java 基础]数组
什么是数组?想象一下,你需要存储 5 个学生的考试成绩。你可以声明 5 个不同的 int 变量,但这会显得很笨拙。数组提供了一种更简洁、更有组织的方式来存储和管理这些数据。 数组可以看作是相同类型元素的集合,这些元素在内存中是连…...
fastadmin fildList 动态下拉框默认选中
html页面 <td><select class"form-control dtselect" data-rule"required" data-dtselected"<%row.type%>" name"<%name%>[<%index%>][type]">{foreach nametypeList idvo}<option value"{$vo…...
java学习笔记——数组和二维数组
一、一维数组 1. 定义数组 语法: // 动态初始化(指定长度) 数据类型[] 数组名 = new 数据类型[长度]; // 示例: int[] arr1 = new int[5]; // 默认值:0// 静态初始化(直接赋值) 数据类型[] 数组名 = {元素1, 元素2, ...}; // 示例: String[]…...

‘pnpm‘ 不是内部或外部命令,也不是可运行的程序
npm install -g pnpm changed 1 package in 4s 1 package is looking for funding run npm fund for details C:\Users\gang>pnpm pnpm 不是内部或外部命令,也不是可运行的程序 或批处理文件。 原来是安装的全局路径被我改了 npm list -g --depth 0 把上述…...

Android Test2 获取系统android id
Android Test2 获取系统 android id 这篇文章针对一个常用的功能做一个测试。 在项目中,时常会遇到的一个需求就是:一台设备的唯一标识值。然后,在网络请求中将这个识别值传送到后端服务器,用作后端数据查询的条件。Android 设备…...

webpack打包学习
vue开发 现在项目里安装vue: npm install vue vue的文件后缀是.vue webpack不认识vue的话就接着安插件 npm install vue-loader -D 这是.vue文件: <template> <div><h2 class"title">{{title}}</h2><p cla…...

基于Java(Jsp+servelet+Javabean)+MySQL实现图书管理系统
图书管理系统 一、需求分析 1.1 功能描述 1.1.1“读者”功能 1)图书的查询:图书的查询可以通过搜索图书 id、书名、作者名、出版社来实现,显示结果中需要包括书籍信息以及是否被借阅的情况; 2)图书的借阅:借阅图书…...

服务器CPU被WMI Provider Host系统进程占用过高,导致系统偶尔卡顿的排查处理方案
问题现状 最近一个项目遇到一个非常奇葩的问题:正式服务器被一个WMI Provider Host的系统进程占用大量的CPU资源,导致我们的系统偶尔卡顿 任务管理器-详细信息中CPU时间,这个进程也是占用最多的 接口时不时慢很多 但单独访问我们的接口又正…...