当前位置: 首页 > news >正文

Redis的两种持久化方案

Redis 提供了多种持久化机制来保证数据在发生意外情况下(如断电或服务器崩溃)不丢失。以下是几种主要的 Redis 持久化方案及其特点:

1. RDB (Redis Database Backup)

RDB 是 Redis 创建的数据库快照,它可以将数据集快照以二进制文件的形式存储在磁盘上。RDB 文件可以在指定时间间隔创建,也可以通过命令手动触发。

特点:
  • 性能:生成 RDB 文件的过程不会影响 Redis 的性能,因为 Redis fork 出一个子进程来完成快照的创建,主进程依然处理客户端请求。
  • 数据恢复:RDB 文件非常适合大型数据集的备份和数据恢复。加载 RDB 文件时速度非常快。
  • 配置灵活:通过配置 save 选项,可以在一定的写命令数量或时间间隔后自动生成 RDB 文件。
配置:
# 在 `redis.conf` 文件中配置 RDB 选项
save 900 1    # 900秒内至少有1个键被修改,则触发RDB持久化
save 300 10   # 300秒内至少有10个键被修改,则触发RDB持久化
save 60 10000 # 60秒内至少有10000个键被修改,则触发RDB持久化dbfilename dump.rdb # 指定RDB文件名
dir /var/lib/redis  # 指定RDB文件存放路径
手动触发:
# 生成 RDB 文件
SAVE          # 同步方式阻塞Redis
BGSAVE        # 异步方式,不阻塞Redis

2. AOF (Append-Only File)

AOF 方式通过将每个写操作都记录在一个日志文件中来实现持久化。通过回放这个 AOF 日志文件,可以重建数据集。

特点:
  • 实时性:AOF 以追加方式写入文件,数据恢复的即时性非常高。
  • 数据安全:可以通过配置 fsync 策略保证数据的持久化频率,如 fsync 每秒一次、每次写操作都 fsync、或不执行 fsync(交由操作系统管理)。
  • 文件管理:AOF 文件随着写操作的增加而不断增大,但 Redis 提供了 AOF 重写机制来压缩文件大小。
配置:
# 在 `redis.conf` 文件中配置 AOF 选项
appendonly yes           # 开启AOF持久化
appendfilename "appendonly.aof"  # AOF文件名# fsync选项
# always: 每次写入操作都fsync,最安全但最慢
# everysec: 每秒fsync一次,折中方案
# no: 不执行fsync,由操作系统决定什么时候将数据写入磁盘
appendfsync everysec# AOF 重写配置
auto-aof-rewrite-percentage 100   # AOF文件大小增长了上一次重写时大小的百分比
auto-aof-rewrite-min-size 64mb    # AOF文件最小大小
手动触发:
# 手动触发 AOF 重写
BGREWRITEAOF

3. 混合持久化

从 Redis 4.0 开始,支持 RDB 和 AOF 两者结合的混合持久化方式。这种方式在AOF重写时,将新的AOF文件开头保存为一个RDB格式的二进制快照,后面再追加增量的AOF日志指令。这种持久化方案结合了RDB文件的重启加载速度快与AOF日志文件的实时性。

配置:
aof-use-rdb-preamble yes # 开启AOF文件混合模式

4. No Persistence

如果你对性能有极高的要求,并且不在意数据持久化(例如数据可以通过外部数据库重建),可以完全关闭持久化。

配置:
# 关闭 RDB 和 AOF 持久化
save ""
appendonly no

选择适合的持久化方案

选择合适的 Redis 持久化方案需要考虑以下因素:

  • 数据重要性:数据丢失的容忍度是多少?
  • 写操作负载:写操作频繁程度如何?是否需要即时持久化?
  • 性能要求:对读写性能的要求是什么?
  • 存储空间:是否需要节省存储空间?
  • 恢复速度:希望在恢复数据时多快能重新上线?

通常,组合使用 RDB 和 AOF 是一种较为推荐的方案,可以兼顾数据持久性和性能。具体配置可以根据业务需求进行调整。例如可以使用 everysec 的 AOF 同步策略,以及定期的 RDB 快照来确保数据的完整性和恢复速度。

每种持久化方案有其优缺点,你们可以根据自身的业务需求和资源来制定最合适的持久化策略以确保数据安全和高效运行。

相关文章:

Redis的两种持久化方案

Redis 提供了多种持久化机制来保证数据在发生意外情况下(如断电或服务器崩溃)不丢失。以下是几种主要的 Redis 持久化方案及其特点: 1. RDB (Redis Database Backup) RDB 是 Redis 创建的数据库快照,它可以将数据集快照以二进制…...

Spring中常见知识点及使用

Spring Framework 是 Java 生态系统中最流行的开源框架之一,它提供了一系列强大的功能,用于构建企业级应用。以下是一些常见的 Spring 知识点及其使用方法: 1. 依赖注入(Dependency Injection) 依赖注入是 Spring 的…...

Excel 宏录制与VBA编程 ——VBA编程技巧篇二 (合并内容相同连续单元格、取消合并单元格并在每个单元格中保留内容)

1、合并内容相同的连续单元格 如果需要合并如图所示的工作表中B列中部门相同的连续单元格 VBA代码: Sub Mergerng()Dim IntRow As IntegerDim i As IntegerApplication.DisplayAlerts FalseWith Sheet1IntRow .Range("A65536").End(xlUp).RowFor i In…...

理解和应用工业设备字典文件:一篇详细指南

理解和应用工业设备字典文件:一篇详细指南 在工业自动化领域,设备和模块的配置和管理是一个复杂而重要的任务。为了简化这个过程,字典文件被广泛应用于描述离线对象字典。本文将详细解释字典文件的用途、格式,并举例说明如何引用…...

Python酷库之旅-第三方库Pandas(010)

目录 一、用法精讲 22、pandas.read_hdf函数 22-1、语法 22-2、参数 22-3、功能 22-4、返回值 22-5、说明 22-6、用法 22-6-1、数据准备 22-6-2、代码示例 22-6-3、结果输出 23、pandas.HDFStore.put方法 23-1、语法 23-2、参数 23-3、功能 23-4、返回值 23-5…...

海康威视监控web实时预览解决方案

海康威视摄像头都试rtsp流,web页面无法加载播放,所以就得转换成web页面可以播放的hls、rtmp等数据流来播放。 一:萤石云 使用萤石云平台,把rtsp转化成ezopen协议,然后使用组件UIKit 最佳实践 萤石开放平台API文档 …...

ubuntu运行qq音乐闪退

ubuntu运行qq音乐闪退 修改/usr/share/applications中的qqmusic.desktop,在Exec后加上 --no-sandbox,如下图所示: 该文件有可能是只读,权限不够的话用sudo vim qqmusic.desktop...

人脸检测(Python)

目录 环境: 初始化摄像头: 初始化FaceDetector对象: 获取摄像头帧: 获取数据: 绘制数据: 显示图像: 完整代码: 环境: cvzone库:cvzone是一个基于…...

Offer150-23:链表中环的入口节点

题目描述:如果一个链表中包含环,找了环的入口节点。例如,在下图所示的链表中,环的入口节点是节点4。 分析:第一步需要确定一个链表中是否包含环,可以用快慢指针来解决这个问题。定义两个指针,同时从链表的头…...

【linux】服务器创建RAID1

【linux】服务器创建RAID1 文章目录 【linux】服务器创建RAID1一、配置介绍raid介绍raid类型RAID 0:RAID 1:RAID 5:RAID 6:二、配置RAID硬件RAID:软件RAID:三、软件配置RAID1(以linux为例)1.先进入管理员模式2.安装mdadm工具3.创建raid1数组4.查看RAID数组状态5.格式化和挂载…...

记录自己Ubuntu加Nvidia驱动从入门到入土的一天

前言 记录一下自己这波澜壮阔的一天,遇到了很多问题,解决了很多问题,但是还有很多问题,终于在晚上的零点彻底放弃,重启windows。 安装乌班图 1.安装虚拟机 我开始什么操作系统的基础都没有,网上随便搜了…...

基于现有Docker镜像构建新的Docker镜像

1.拉取ubuntu 22.04的系统镜像 docker pull ubuntu:22.04 拉取成功后在DockerDesktop中可发现该镜像 2.启动刚才接取的ubuntu镜像 docker run --name Ubuntu22.04 -it -d -p 22:22 -p 80:80 -p 443:443 340d9b015b194dc6e2a13938944e0d016e57b9679963fdeb9ce021daac430221 启…...

Java 静态变量、静态代码块、普通代码块、构造方法的执行顺序

今天碰到这个问题,看了课程以及资料,做出解答。这是我自己绘制的图,按从上到下,从左到右的顺序执行。如有问题请联系我修正。 要点: 1、执行顺序分为两步,类加载和初始化阶段。 2、因为静态变量和静态代码块…...

计算机网络性能指标概述:速率、带宽、时延等

在计算机网络中,性能指标是衡量网络效率和质量的重要参数。本文将综合三篇关于计算机网络性能指标的文章,详细介绍速率、带宽、吞吐量、时延、时延带宽积、往返时延(RTT) 和利用率的概念及其在网络中的应用。 1. 速率(…...

众所周知沃尔玛1P是怎么运营?

​​沃尔玛的1P模式,即第一方供应商模式,是其独特的采购策略。在这种模式下,供应商先将商品卖给沃尔玛,由沃尔玛负责库存管理和销售。沃尔玛通过强大的采购和物流能力控制库存,确保商品品质,为客户提供更加…...

【Linux】静态库的制作和使用详解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃个人主页 :阿然成长日记 …...

2.贪心算法.基础

2.贪心算法.基础 基础知识题目1.分发饼干2.摆动序列2.1.思路二:动态规划法 3.最大子序和4.买股票的最佳时机24.1.思路二:动态规划法4.2.买股票的最佳时机 5.跳跃游戏5.1.跳跃游戏2 6.K次取反后最大化的数组和7.加油站8.分发糖果 总结 基础知识 什么是贪…...

用Python轻松转换PDF为CSV

数据的可访问性和可操作性是数据管理的核心要素。PDF格式因其跨平台兼容性和版面固定性,在文档分享和打印方面表现出色,尤其适用于报表、调查结果等数据的存储。然而,PDF的非结构化特性限制了其在数据分析领域的应用。相比之下,CS…...

关于微信支付-商户平台:查询订单提示“查询失败:操作失败,请稍候重试”的分析

目录 引子 分析 应对 小结 引子 在开发和实施微信 JSAPI 支付的应用后,我们遇到了一些问题,订单的状态更新不正常,当然我们首先需要从自身寻找原因和完善解决问题的办法和方案。在支付的过程中,客户会给我们一些反馈&#xf…...

掌握【Python异常处理】:打造健壮代码的现代编程指南

目录 ​编辑 1. 什么是异常? 知识点 示例 小李的理解 2. 常见的内置异常类型 知识点 示例 小李的理解 3. 异常机制的意义 知识点 示例 小李的理解 4. 如何处理异常 知识点 示例 小李的理解 5. 抛出异常 知识点 示例 小李的理解 6. Python内置…...

DeepSeek系统设计辅助:如何在48小时内完成可审计、可回滚、可压测的AI服务架构图?

更多请点击: https://intelliparadigm.com 第一章:DeepSeek系统设计辅助 DeepSeek系统设计辅助模块面向架构师与后端工程师,提供模型能力调用、接口契约生成、异步任务编排等核心支撑能力。该模块不替代人工设计决策,而是通过结构…...

AArch64内存管理:MAIR_EL3寄存器详解与应用

1. AArch64内存管理基础与MAIR_EL3寄存器定位 在Armv8-A/v9-A架构中,内存管理单元(MMU)通过多级页表实现虚拟地址到物理地址的转换。当处理器执行内存访问时,MMU会遍历页表条目(Translation Table Entry),其中包含两个关键信息:目…...

别再死记硬背SMO公式了!用Python手写一个SVM分类器,带你一步步拆解SMO核心逻辑

用Python手写SVM分类器:代码驱动理解SMO算法核心在机器学习领域,支持向量机(SVM)以其优秀的分类性能和坚实的数学基础著称。然而,许多学习者在理解其核心算法——序列最小优化(SMO)时,往往被复杂的数学推导所困扰。本文将采用一种…...

ARM架构CONSTRAINED UNPREDICTABLE行为解析与应对

1. ARM架构中的CONSTRAINED UNPREDICTABLE行为解析在处理器架构设计中,UNPREDICTABLE行为通常指架构规范未明确定义的执行结果,可能导致不可预期的系统状态。ARM架构通过引入CONSTRAINED UNPREDICTABLE机制,将这类行为限制在特定范围内&#…...

广州因特智能:AI视觉软硬结合,打破半导体检测装备“卡脖子”困境

【导语:广州因特智能科技孵化于西安电子科技大学广州研究院,专注用AI视觉技术解决工业场景的“卡脖子”检测难题,为半导体、光通信、新能源三大领域提供高端检测装备。】校地合作孵化,构建完整能力体系广州因特智能科技由西安电子…...

股票买卖最佳时机:LeetCode121题解

题目LeetCode121给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取…...

车载诊断系统(OBD)的原理、演进与未来

本文约8,167字,建议收藏阅读 作者 | 北湾南巷 出品 | 汽车电子与软件 引 言 在现代汽车中,越来越多的故障不再表现为明显的机械损坏,而是以“亮灯”“报码”“性能异常”等电子信号的形式出现。发动机为什么亮起故障灯?排放是否达…...

WarcraftHelper终极指南:深度解析魔兽争霸III现代化兼容性解决方案

WarcraftHelper终极指南:深度解析魔兽争霸III现代化兼容性解决方案 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper WarcraftHelper是一款专…...

艾尔登法环存档迁移终极指南:3分钟解决角色转移难题

艾尔登法环存档迁移终极指南:3分钟解决角色转移难题 【免费下载链接】EldenRingSaveCopier 项目地址: https://gitcode.com/gh_mirrors/el/EldenRingSaveCopier 还在为《艾尔登法环》存档版本不兼容而烦恼吗?EldenRingSaveCopier 是你的终极解决…...

DeepSeek代码风格检查避坑指南(内部审计报告首次披露:37个被忽略的合规红线)

更多请点击: https://intelliparadigm.com 第一章:DeepSeek代码风格检查的合规性本质与审计背景 DeepSeek代码风格检查并非单纯的技术偏好约束,而是嵌入研发治理链条中的合规性控制节点。其本质是将编程实践与组织级安全策略、行业监管要求&…...