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 快照来确保数据的完整性和恢复速度。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日Attention学习8——Rectangular self-Calibration Attention

模块出处 [ECCV 24] [link] [code] Context-Guided Spatial Feature Reconstruction for Efficient Semantic Segmentation 模块名称 Rectangular self-Calibration Attention (RCA) 模块作用 空间注意力 模块结构 模块代码 import torch import torch.nn as nn import tor…

Redis基础教程(十四):Redis连接

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

Turborepo简易教程

参考官网:https://turbo.build/repo/docs 开始 安装全新的项目 pnpm dlx create-turbolatest测试应用包含: 两个可部署的应用三个共享库 运行: pnpm install pnpm dev会启动两个应用web(http://localhost:3000/)、docs(http://localhost…

程序员,去哪个城市工作更幸福?

深漂、沪漂、京漂、杭漂……又是一年毕业季,作为CS专业or新手程序员会选择什么城市工作呢?希望这篇文章给各位一些参考。 根据拉勾招聘大数据研究院的数据显示,超六成程序员集中在一线城市,其中北京19%,深圳16%&#x…

【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code

【遇坑笔记】Node.js 开发环境与配置 Visual Studio Code 前言node.js开发环境配置解决pnpm 不是内部或外部命令的问题(pnpm安装教程)解决 pnpm : 无法加载文件 C:\Program Files\nodejs\pnpm.ps1,因为在此系统上禁止运行脚本。 vscode 插件开…

汇川H5U小型PLC不用写程序测试EC总线电机

目录 新建工程添加EtherCAT组态添加运动控制轴仿真测试 新建工程 新建一个H5U工程,不使用临时工程 系列选择H5U即可 添加EtherCAT组态 这里在EC总线中添加了一个汇川660的伺服 驱动参数使用默认 添加运动控制轴 新建一个轴Axis_0 将新建的轴和EC组态的660驱动…

中国1km高分辨率高质量逐年近地表CO数据集(2013-2022年)

该数据为中国高分辨率高质量逐年CO数据集,该数据集主要的空间范围覆盖整个中国,其中内容包括中国1km高分辨率高质量逐年CO数据集(2013-2022年)。时间分辨率为年,单位为mg/m3,数据以(.nc/.tif)格式进行存储。

解决 npm intasll 安装报错 Error: EPERM: operation not permitted

Node.js安装及环境配置完成之后 npm install express -g 安装全局的模块报错提示没有权限operation not permitted mkdir 错误编号4048: 其原因是当前用户操作该目录权限不足,当以管理员身份运行cmd,再执行npm install express -g 是不会报权…

使用 AlphaZero 和 Tabu 搜索查找越来越大的极值图

使用 AlphaZero 和 Tabu 搜索查找越来越大的极值图 AlphaZero 方法最佳研究(第1部分) 文章目录 一、说明二、引言三、预备知识四、方法4.1 AlphaZero4.2 禁忌搜索 五、实验与结果六、讨论七、附录A 一个例子B 问题背景 一、说明 人工智能的树和图的检索问…

Solution

(解决方案)可行性研究报告暨设计方案-zengwenfeng.doc 基本上都要300-500多页,大型【纯软件】,县级0-200万,市级项目500-1500万不等,省部级1000-10000万不等都有。本例为过往已完成项目案例目录结构。搞方案都要准备1-3个月呢。所…

Windows搭建本地对象存储服务MinIO并且使用springboot整合

开发文档: MinIO Windows中文文档 MinIO Object Storage for Windows (英文文档) 1、准备工作 准备一个空的文件夹,用来存放minio相关的内容; 这里是在D盘创建一个minio的文件夹; 后续所有跟MinIO相关…

探寻操作系统文件名字符限制的规则和历史

引言 从最早的电脑系统到现代的操作系统,文件命名的规则一直在不断发展,这些规则体现了不同操作系统设计哲学的差异。作为开发者,了解这些差异和背后的历史渊源非常有价值,本文将详细探讨Windows、macOS和Linux三大主流操作系统在…

【网络安全】第7讲 计算机病毒概述(笔记)

一、计算机病毒的简介 1、名称的由来 由生物医学上的 “病毒” 一词借用而来。 (1)与生物医学上“病毒”的异同 同:都具有传染性、流行性、针对性等。异:不是天生的,而是人为编制的具有特殊功能的程序。 2、病毒的起…

(附源码)springboot高校全流程考勤系统-计算机毕设 27637

Springboot高校全流程考勤系统 摘 要 本文针对高校考勤等问题,对其进行研究分析,然后开发设计出高校全流程考勤系统以解决问题。高校全流程考勤系统系统主要功能模块包括:考勤签到、课程信息、考勤情况、申请记录列表等,系统功能设…

python运维开发 业务服务监控详解

业务监控是运维体系中最重要的环节,是保证业务服务质量的关键手段,python在监控方面提供了大量的第三方工具,可以帮助我们快速、有效的开发企业级服务监控平台 一、文件内容差异对比方法 difflib作为python的标准库模块,无需安装…

等保测评需要什么SSL证书

在进行信息安全等级保护(简称“等保”)测评时,选择合适的HTTPS证书对于确保网站的安全性和合规性至关重要。以下是在等保测评中选择HTTPS证书时应考虑的因素: 国产证书: 等保测评倾向于使用国产品牌的SSL证书&#x…

Linux系统编程——线程基本概念

目录 一,关于多线程 二,重新理解进程 三,线程VS进程 四,线程周边概念 4.1 线程的数据共享 4.2 线程的优点 4.3 线程的缺点 4.4 线程异常 4.5 线程用途 五,一些问题解答 如何理解将资源分配给各个线程&…

Java面试八股之MySQL的pconenct和connect有什么区别

MySQL的pconenct和connect有什么区别 在PHP中,mysql_pconnect() 和 mysql_connect() 是用来建立与MySQL数据库服务器连接的两个函数,它们的主要区别在于连接的持久性。 mysql_connect(): 这个函数每次调用都会尝试创建一个新的数据库连接。 当PHP脚本…

气象观测站:观测和记录各种气象要素

在广袤无垠的蓝天下,气象观测站如同一个个静默的守护者,默默记录着风云变幻,守护着大地的安宁。 一、气象观测站:守护天空的“千里眼” 气象观测站,顾名思义,就是专门用于观测和记录各种气象要素的站点。它…

峰与谷00

题目链接 峰与谷 题目描述 注意点 nums.length < 10000 解答思路 首先想到的是将数组中的元素都存到优先队列中&#xff0c;然后取一半的元素插入到数组奇数位置&#xff0c;再将剩下一半的元素插入到数组偶数位置即可&#xff0c;但是时间上并不理想参照题解可以从局部…