Redis持久化的三种方式(RDB、AOF和混合)
Redis持久化的三种方式(RDB、AOF和混合)
目录
- Redis持久化的三种方式(RDB、AOF和混合)
- 介绍
- RDB示例
- 1.配置文件
- 2.触发 RDB 快照保存
- 3.验证
- AOF示例
- 1.配置文件
- 2.校验
- 混合型持久化存储
- 配置文件
介绍
Redis数据主要存储与内存中,因此如果服务器意外重启、宕机、崩溃,那么数据就会全部丢失。而Redis持久化的意义就是为了当发生这些灾难时找回数据。
Redis 提供了两种主要的持久化方式:RDB(Redis Database)和 AOF(Append Only File)
- RDB(Redis Database):
- RDB 持久化通过创建一个名为
dump.rdb的二进制文件来保存 Redis 数据库在某个时间点的快照。在 Redis 重启时,会加载这个文件来恢复数据。
- RDB 持久化通过创建一个名为
- AOF(Append Only File):
- AOF 持久化通过记录服务器接收到的每一个写操作命令(如 set、del 等),以追加的方式写入到一个 AOF 文件中。Redis 重启时会通过重新执行 AOF 文件中的命令来恢复数据。
RDB示例
1.配置文件
在redis.conf中修改rdb备份文件的名称,默认为dump.rdb
dbfilename dump.rdb
save修改触发快照条件
save 900 1 # 900 秒内至少有 1 个键被改变
save 300 10 # 300 秒内至少有 10 个键被改变
save 60 10000 # 60 秒内至少有 10000 个键被改变
dir设置 RDB 文件的存储目录,默认为 Redis 服务器的当前工作目录
dir /data
示例:
dbfilename dump.rdb
save 900 1
dir /data
2.触发 RDB 快照保存
如果没有save触发条件,也可以自己手动触发快照保存
linux环境:
redis-cli SAVE
python环境:
import redis # 连接到Redis服务器
r = redis.Redis(host='localhost', port=6379, db=0) r.bgsave() # 触发RDB快照的保存
3.验证
这里我们设置了自动保存快照,并添加两个数据

然后重启服务器,再次查询keys *,数据还在

- RDB优势:
- 二进制存储,速度极快,磁盘空间占用小
- 在生成RDB快照时,Redis会fork出一个子进程来负责写入磁盘工作,对性能的影响小
- RDB劣势:
- 实时性低,需要等待save
- 有数据丢失风险,如果在save存储间隔期间宕机则无法存储到那期间的数据
- 数据过大时,fork过程会克隆一份数据,相当于内存中突然出现了两倍的数据,可能会影响性能
AOF示例
AOF 日志存储的是 Redis 服务器的顺序指令序列,AOF 日志只记录对内存进行修改的指令记录
1.配置文件
-
appendonly:是否开启AOF
-
appendfilename:AOF文件名。默认值为
appendonly.aof -
appendfsync:AOF持久化策略的配置。有三个选项:
-
no:不执行fsync,由操作系统保证数据同步到磁盘,速度最快,但不太安全。 -
always:每次写入都执行fsync,以保证数据同步到磁盘,效率很低。 -
everysec:每秒执行一次fsync,这是默认选项,兼顾了安全性和效率。但可能会导致最多丢失1秒的数据。
-
示例:
# 开启AOF持久化功能
appendonly yes # AOF文件的名称
appendfilename "appendonly.aof" # 配置AOF持久化的fsync策略
# 使用everysec可以实现性能和数据安全性的平衡,每秒fsync一次
appendfsync everysec # AOF文件自动重写的触发条件
# 设置为100,表示当AOF文件大小是上一次重写后的AOF文件大小的100%时,触发重写
auto-aof-rewrite-percentage 100 # 设置触发AOF重写的最小文件大小
# 避免AOF文件很小的时候触发重写,减少不必要的重写操作
auto-aof-rewrite-min-size 64mb # 配置在启动加载AOF文件时对不完整文件的处理
# 设置为yes,允许加载不完整的AOF文件,提高数据恢复的灵活性
aof-load-truncated yes # 启用增量式fsync,减少磁盘I/O操作
aof-rewrite-incremental-fsync yes # 在AOF重写期间,使用备用的子进程进行写操作,减少对主进程的影响
# 注意: 在Redis 4.0及以上版本中,这通常是默认行为
# aof-rewrite-use-rdb-preamble yes # 根据Redis版本和具体需求选择是否启用混合持久化 # 配置文件的目录,AOF文件会存储在这个目录下
dir /data # 其他可能的配置项,根据实际需求进行配置
# 例如,关于AOF重写期间是否禁止appendfsync
# no-appendfsync-on-rewrite no
2.校验
随便搞点数据进去(set k '123'),然后打开appendonly.aof

混合型持久化存储
混合持久化在AOF重写时,将压缩的RDB数据置于AOF文件首,后续追加AOF命令,以结合两者优势加速恢复并减少数据丢失风险
它继承了RDB和AOF优点:
- 快速恢复(RDB)
- 数据完整(AOF)
配置文件
首先启用 AOF 持久化,并设置 aof-use-rdb-preamble 为 yes(Redis 5.0 及以上版本中默认启用)
appendonly yes
aof-use-rdb-preamble yes
当 AOF 文件增长到一定大小时,Redis 会自动触发 AOF 重写过程。在重写过程中,Redis 会首先创建一个新的 AOF 文件,并将当前的内存快照(RDB 格式)以二进制压缩形式写入到这个新文件的开头
手动触发AOF重写
redis-cli BGREWRITEAOF
相关文章:
Redis持久化的三种方式(RDB、AOF和混合)
Redis持久化的三种方式(RDB、AOF和混合) 目录 Redis持久化的三种方式(RDB、AOF和混合)介绍RDB示例1.配置文件2.触发 RDB 快照保存3.验证 AOF示例1.配置文件2.校验 混合型持久化存储配置文件 介绍 Redis数据主要存储与内存中,因此如果服务器意外重启、宕机、崩溃&am…...
Telnet发送get/post请求
连接到HTTP服务器 telnet www.baidu.com 80Ctrl ] 发送请求 GET /index.html HTTP/1.1 Host: www.baidu.com# 发送post请求 POST /test/firstTest HTTP/1.1 HOST:127.0.0.1 Content-Type:application/x-www-form-urlencoded Content-Length:10连续按两次 Enter 键发送请求 HT…...
PostgreSQL匹配字符串方法
PostgreSQL匹配字符串方法 在 PostgreSQL 中,如果你想要检查一个包含多个由逗号分隔的值的字符串是否包含特定的子字符串,你可以使用字符串函数来实现这一点。由于你正在查找的是一个由逗号分隔的列表中的特定值,你需要确保在比较时该值不是…...
Docker镜像加速配置
由于当前运营商网络问题,可能会导致您拉取 Docker Hub 镜像变慢,索引可以配置阿里云镜像加速器。阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 每个人镜像地址都不一样,需要登陆阿里云自行查看,地址在上面&a…...
【elementui】记录解决el-tree开启show-checkbox后,勾选一个叶结点后会自动折叠的现象
第一种解决方案:设置default-expand-keys的值为当前选中的key值即可 <el-treeref"tree"class"checkboxSelect-wrap":data"treeData"show-checkboxnode-key"id":expand-on-click-node"true":props"defau…...
用Vue3和Plotly.js绘制交互式3D烛形图
本文由ScriptEcho平台提供技术支持 项目地址:传送门 Plotly.js实现交互式K线图 应用场景 K线图广泛应用于金融领域,用于展示股票、外汇等金融产品的价格走势。它直观地呈现了开盘价、收盘价、最高价和最低价等信息,帮助投资者分析市场趋势…...
git上传文件
git init git add . git commit -m " " git remote add origin 仓库的地址 git push -u origin master 如果出现以下问题 可以用这一句强制上传 git push -f origin master...
Redis 7.x 系列【16】持久化机制之 AOF
有道无术,术尚可求,有术无道,止于术。 本系列Redis 版本 7.2.5 源码地址:https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 执行原理2.1 Redis 6.x2.1.1 直接写2.1.2 重写 2.2 Redis 7.x2.2.1 直接写2…...
使用 PostGIS 生成矢量图块
您喜欢视听学习吗?观看视频指南! 或者直接跳到代码 Overture Maps Foundation是由亚马逊、Meta、微软和 tomtom 发起的联合开发基金会项目,旨在创建可靠、易于使用、可互操作的开放地图数据。 Overture Maps 允许我们以GeoJSON格式下载开放…...
WebSocket 心跳机制如何实现
是一种简单并且有效的策略,用于维持长链接的活跃状态,防止因为网络空闲或者不稳定因素,导致链接意外中断。通过周期性的心跳消息,确保了链接的持久性和周期性,是维持实时通信服务稳定运行的关键组件。 1. 定时发送心跳…...
Docker 容器连接
Docker 容器连接 引言 在当今的软件开发和运维领域,Docker 已经成为了一个不可或缺的工具。它通过容器化的方式,为开发者提供了一种轻量级、可移植的计算环境。然而,要充分发挥 Docker 的潜力,我们需要掌握如何连接这些容器。本文将深入探讨 Docker 容器连接的概念、方法…...
【C语言】continue 关键字
当在C语言中使用continue关键字时,它用于控制循环语句的执行流程。与break不同,continue不会终止整个循环,而是终止当前迭代,并立即开始下一次迭代。这种行为使得可以在循环内部根据特定条件跳过某些代码块,从而控制程…...
Taro + vue3 中微信小程序中实现拉起支付
在前端开发中 H5 的拉起支付和微信小程序的拉起支付 是不太一样的 现在分享一下微信小程序中的拉起支付 逻辑都在后端 我是用的Taro 框架 其实就是一个Api Taro 文档...
003-GeoGebra如何无缝嵌入到PPT里
GeoGebra无缝嵌入到PPT里真是一个头疼的问题,已成功解决,这里记录一下,希望可以帮助到更多人。 注意,后续所有的文章说的PPT都是Offce Power Point, 不要拿着WPS的bug来问我哦,我已经戒WPS了(此处表示无奈&…...
AI:开发者的朋友还是对手?
AI是在帮助开发者还是取代他们? 在软件开发领域,生成式人工智能(AIGC)正在改变开发者的工作方式。无论是代码生成、错误检测还是自动化测试,AI工具正在成为开发者的得力助手。然而,这也引发了对开发者职业…...
如何在Android Studio中查看APP客户端日志
测试Android应用时,日志查看是一个至关重要的调试工具,它帮助测试人员快速定位问题。幸运的是,Android Studio为我们提供了一个强大的工具——Logcat,使得查看运行时日志变得直接且简单。本文将引导你如何在Android Studio中使用L…...
2024微信小程序期末大作业-点奶茶微信小程序(后端nodejs-server)(附下载链接)_微信小程序期末大作业百度网盘下载
菜单展示 购物车展示: 提交订单: 支付详情页展示: 订单查看: 查看历史消费: 部分代码展示: <!--pages/home/home.wxml--> <block wx:for"{{listData}}" wx:key"itemlist&qu…...
Qt:4.信号和槽
目录 1.信号源、信号和槽: 2.Qt类的继承关系: 3.自定义槽函数: 4.第一种信号和槽的连接的方法: 5.第二种信号和槽的连接的方法: 6.自定义信号: 7.发射信号: 8.信号和槽的传参:…...
Ubuntu20.04更新GLIBC到2.35版本
目录 1 背景2 增加源2.1 标准源2.2 镜像源 3 更新 1 背景 Ubuntu20.04默认GLIBC库版本是2.31.今天碰到一个软件需要2.35版本的GLIBC。 升级GLIBC库有两种方式: 下载高版本库源码,编译后替换系统中低版本库。由于GLIBC库是Linux系统中最基础库ÿ…...
Qt 实战(7)元对象系统 | 7.1、简介
文章目录 一、简介1、元对象系统的基本条件2、元对象系统的核心功能3、元对象系统的核心类4、总结 Qt的元对象系统(Meta-Object System)是Qt框架中一个极其重要的组成部分,它为Qt提供了信号与槽机制、实时类型信息(RTTI࿰…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Java 语言特性(面试系列1)
一、面向对象编程 1. 封装(Encapsulation) 定义:将数据(属性)和操作数据的方法绑定在一起,通过访问控制符(private、protected、public)隐藏内部实现细节。示例: public …...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...
华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建
华为云FlexusDeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色,华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型,能助力我们轻松驾驭 DeepSeek-V3/R1,本文中将分享如何…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
