redis有哪几种持久化方式

Redis 提供了两种持久化方式:RDB(Redis Database) 和 AOF(Append-Only File)。它们各有优缺点,适用于不同的场景。以下是它们的原理、优缺点以及如何选择的建议:


1. RDB(Redis Database)

原理
  • RDB 是 Redis 的快照持久化方式。

  • Redis 会定期将内存中的数据生成一个二进制快照文件(.rdb),并保存到磁盘。

  • 可以通过配置 save 参数设置触发快照的条件(如 save 900 1 表示 900 秒内至少有 1 个 Key 被修改时触发快照)。

优点
  • 性能高:生成快照是异步操作,对 Redis 的性能影响较小。

  • 文件紧凑:RDB 文件是二进制格式,文件体积小,适合备份和恢复。

  • 恢复速度快:恢复数据时直接加载 RDB 文件,速度比 AOF 快。

缺点
  • 数据丢失风险:如果 Redis 崩溃,最后一次快照之后的数据会丢失。

  • 不适合实时持久化:快照是定期生成的,无法做到实时持久化。

适用场景
  • 适合对数据丢失不敏感的场景,如缓存、数据分析等。

  • 适合需要快速备份和恢复的场景。


2. AOF(Append-Only File)

原理
  • AOF 是 Redis 的日志持久化方式。

  • Redis 会将每个写操作(如 SETDEL)追加到 AOF 文件的末尾。

  • 可以通过配置 appendfsync 参数控制 AOF 文件的同步频率:

    • always:每次写操作都同步到磁盘,数据最安全,但性能最低。

    • everysec:每秒同步一次,性能和数据安全性折中(默认配置)。

    • no:由操作系统决定同步时机,性能最高,但数据安全性最低。

优点
  • 数据安全性高:AOF 文件记录了所有写操作,数据丢失风险低。

  • 支持实时持久化:通过 appendfsync always 可以实现实时持久化。

  • 可读性强:AOF 文件是文本格式,可以手动编辑或分析。

缺点
  • 文件体积大:AOF 文件记录了所有写操作,文件体积通常比 RDB 大。

  • 恢复速度慢:恢复数据时需要重放 AOF 文件中的写操作,速度比 RDB 慢。

  • 性能开销大:频繁的写操作和同步会影响 Redis 的性能。

适用场景
  • 适合对数据安全性要求高的场景,如金融、订单等。

  • 适合需要实时持久化的场景。


3. RDB 和 AOF 的对比

特性RDB(快照)AOF(日志)
持久化方式定期生成快照记录每个写操作
文件格式二进制文本
文件体积
数据安全性较低(可能丢失最后一次快照后的数据)较高(可以配置为实时持久化)
恢复速度
性能开销
适用场景缓存、数据分析金融、订单等对数据安全性要求高的场景

4. 如何选择?

  • 单独使用 RDB

    • 适合对数据丢失不敏感的场景。

    • 适合需要快速备份和恢复的场景。

  • 单独使用 AOF

    • 适合对数据安全性要求高的场景。

    • 适合需要实时持久化的场景。

  • 同时使用 RDB 和 AOF

    • 结合两者的优点,RDB 用于定期备份,AOF 用于实时持久化。

    • 恢复时优先使用 AOF 文件,确保数据完整性。


5. 配置示例

RDB 配置

bash

save 900 1      # 900 秒内至少有 1 个 Key 被修改时触发快照
save 300 10     # 300 秒内至少有 10 个 Key 被修改时触发快照
save 60 10000   # 60 秒内至少有 10000 个 Key 被修改时触发快照
dbfilename dump.rdb  # RDB 文件名
dir /var/lib/redis   # RDB 文件保存路径
AOF 配置

bash

appendonly yes               # 启用 AOF
appendfilename "appendonly.aof"  # AOF 文件名
appendfsync everysec         # 每秒同步一次
dir /var/lib/redis           # AOF 文件保存路径

6. 总结

  • RDB:适合对性能要求高、数据丢失不敏感的场景。

  • AOF:适合对数据安全性要求高、需要实时持久化的场景。

  • 结合使用:可以同时启用 RDB 和 AOF,兼顾性能和数据安全性。

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

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

相关文章

Unity引擎使用HybridCLR(华佗)热更新

大家好,我是阿赵。   阿赵我做手机游戏已经有十几年时间了。记得刚开始从做页游的公司转到去做手游的公司,在面试的时候很重要的一个点,就是会不会用Lua。使用Lua的原因很简单,就是为了热更新。   热更新游戏内容很重要。如果…

DeepSeek R1-7B 医疗大模型微调实战全流程分析(全码版)

DeepSeek R1-7B 医疗大模型微调实战全流程指南 目录 环境配置与硬件优化医疗数据工程微调策略详解训练监控与评估模型部署与安全持续优化与迭代多模态扩展伦理与合规体系故障排除与调试行业应用案例进阶调优技巧版本管理与迭代法律风险规避成本控制方案文档与知识传承1. 环境配…

大白话html语义化标签优势与应用场景

大白话html语义化标签优势与应用场景 大白话解释 语义化标签就是那些名字能让人一看就大概知道它是用来做什么的标签。以前我们经常用<div>来做各种布局&#xff0c;但是<div>本身没有什么实际的含义&#xff0c;就像一个没有名字的盒子。而语义化标签就像是有名…

软件工程---构件

在软件工程中&#xff0c;构件是一个独立的、可复用的软件单元&#xff0c;它具有明确的功能、接口和行为&#xff0c;并且可以在不同的环境中加以集成和复用。构件的概念是软件架构和组件化开发的核心思想之一&#xff0c;其目的是促进软件系统的模块化、可维护性和可扩展性。…

MES机联网4:文档资料

目录信息 MES机联网1&#xff1a;技术方案MES机联网2&#xff1a;采集网关MES机联网3&#xff1a;管理后台MES机联网4&#xff1a;文档资料 MQ接入文档 1、建立连接 mqtt连接地址: 192.168.0.138 mqtt端口: 1883 mqtt用户名&#xff1a;admin mqtt密码&#xff1a;123456 …

“此电脑”中删除WPS云盘方法(百度网盘通用)

&#x1f4e3;此方法适用于卸载WPS云盘后&#xff0c;WPS云盘图标依然在此电脑中显示的问题。 原理&#xff1a;通过注册来进行删除 步骤&#xff1a; WIN键R,打开运行窗口&#xff0c;输入regedit命令&#xff0c;来打开【注册表编辑器】&#xff1b; 从左侧&#xff0c;依…

【 Vue3 提升:技术解析与实践】

摘要 Vue.js 3.0 的发布为前端开发带来了众多性能提升、新特性和改进。本文将深入探讨 Vue3 的提升之处&#xff0c;从性能优化、新特性解析、生态系统发展等多个方面进行解析&#xff0c;并通过实践案例展示如何在项目中应用这些新特性。 一、认识 Vue3 1. Vue3 的发布背景…

279.完全平方数

279.完全平方数 力扣题目链接(opens new window) 给定正整数 n&#xff0c;找到若干个完全平方数&#xff08;比如 1, 4, 9, 16, ...&#xff09;使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。 给你一个整数 n &#xff0c;返回和为 n 的完全平方数的 最少数…

HTML-网页介绍

一、网页 1.什么是网页&#xff1a; 网站是指在因特网上根据一定的规则&#xff0c;使用 HTML 等制作的用于展示特定内容相关的网页集合。 网页是网站中的一“页”&#xff0c;通常是 HTML 格式的文件&#xff0c;它要通过浏览器来阅读。 网页是构成网站的基本元素&#xf…

Django模板语法及静态文件

模板语法及静态文件 1 多app创建 在主路由当中引入 include include()函数是Django.urls模块中的一个函数&#xff0c;它的作用是在urls.py文件中引入其他应用的URL模式。 from django.urls import path, include创建多个app python manage.py startapp project_one python ma…

[PWNME 2025] PWN 复现

这种比赛得0也不容易&#xff0c;前边暖声还是能作的。 GOT 指针前溢出&#xff0c;可以溢出到GOT表&#xff0c;然后把后门写上就行 Einstein 这个拿到WP也没复现成&#xff0c;最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…

微信小程序将markdown内容转为pdf并下载

要在微信小程序中将Markdown内容转换为PDF并下载,您可以使用以下方法: 方法一:使用第三方API服务 选择第三方API服务: 可以选择像 Pandoc、Markdown-PDF 或 PDFShift 这样的服务,将Markdown转换为PDF。例如,PDFShift 提供了一个API接口,可以将Markdown内容转换为PDF格式…

MongoDB(一) - MongoDB安装教程(Windows + Linux)

文章目录 前言一、Windows安装单机MongoDB1. 下载并解压MongoDB安装包1.1 下载1.2 解压1.3 相关文件介绍 2. 配置2.1 配置环境变量2.1.1 打开系统属性设置2.1.2 编辑 PATH 环境变量2.1.3 验证环境变量是否配置成功 2.2 创建相关目录和文件2.3 修改MongoDB配置文件 mongodb.conf…

mybatis日期格式与字符串不匹配bug

异常特征&#xff1a;java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.String ### Error updating database. Cause: java.lang.IllegalArgumentException: invalid comparison: java.time.LocalDateTime and java.lang.Str…

【算法学习之路】5.贪心算法

贪心算法 前言一.什么是贪心算法二.例题1.合并果子2.跳跳&#xff01;3. 老鼠和奶酪 前言 我会将一些常用的算法以及对应的题单给写完&#xff0c;形成一套完整的算法体系&#xff0c;以及大量的各个难度的题目&#xff0c;目前算法也写了几篇&#xff0c;题单正在更新&#xf…

快速使用MASR V3版不能语音识别框架

前言 本文章主要介绍如何快速使用MASR语音识别框架训练和推理&#xff0c;本文将致力于最简单的方式去介绍使用&#xff0c;如果使用更进阶功能&#xff0c;还需要从源码去看文档。仅需三行代码即可实现训练和推理。 源码地址&#xff1a;https://github.com/yeyupiaoling/MA…

C语言_数据结构总结5:顺序栈

纯C语言代码&#xff0c;不涉及C 想了解链式栈的实现&#xff0c;欢迎查看这篇文章&#xff1a;C语言_数据结构总结6&#xff1a;链式栈-CSDN博客 这里分享插入一下个人觉得很有用的习惯&#xff1a; 1. 就是遇到代码哪里不理解的&#xff0c;你就问豆包&#xff0c;C知道&a…

2021 年 6 月青少年软编等考 C 语言六级真题解析

目录 T1. 波兰表达式T2. 多项式相加思路分析T3. 扑克牌排序思路分析T4. 表达式求值思路分析T1. 波兰表达式 题目链接:SOJ D1087 此题为 2023 年 12 月三级第三题原题,见 2023 年 12 月青少年软编等考 C 语言三级真题解析中的 T3。 T2. 多项式相加 题目链接:SOJ D1088 我…

AI数字人| Fay开源项目、UE5数字人、本地大模型

数字人实践教程 本教程主要是讲如何在本地UE部署Fay数字人的开源框架。 最终效果可以与人进行自然语言的对话&#xff0c;花了大概10个h的时间到&#xff0c;踩了很多坑&#xff0c;同样想实现的朋友可以作为参考 参考文档&#xff1a;Fay 数字人开源框架 - 飞书云文档 官方的教…

网络版汉译英服务(muduo)

文章目录 网络版汉译英服务&#xff08;muduo&#xff09;muduo库muduo 库是什么muduo 库常见接口介绍muduo::net::EventLoopmuduo::net::TcpConnectionmuduo::net::TcpServermuduo::net::TcpClientmuduo::net::Buffer 汉译英服务服务端客户端 网络版汉译英服务&#xff08;mud…