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

Redis基础教程(十七):Redis数据备份与恢复

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快!
💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

文章目录

      • 引言
      • Redis 数据备份方式
        • RDB 快照(Redis Database Backup)
          • 命令与配置
          • 案例:定期自动备份
        • AOF 日志(Append Only File)
          • 命令与配置
          • 案例:AOF 日志优化与备份
      • 混合使用 RDB 与 AOF
      • Redis 数据恢复实践
        • RDB 恢复
        • AOF 恢复
      • 案例:灾难恢复演练
      • 结论

引言

在分布式系统和微服务架构中,Redis 以其高性能、低延迟的特点成为了许多应用的首选数据存储解决方案。然而,随着数据量的增长和业务复杂性的提升,数据安全和灾难恢复成为运维人员不可忽视的重要议题。本文将详细介绍 Redis 的数据备份与恢复机制,包括 RDB 快照、AOF 日志、以及混合使用策略,并通过具体案例展示如何在实际环境中实施有效的数据保护措施。

Redis 数据备份方式

RDB 快照(Redis Database Backup)

RDB 是 Redis 提供的一种快照式备份机制,它会在指定的时间点创建整个数据库的数据快照。RDB 文件包含了所有键值对的数据,在 Redis 重启时,可以快速加载 RDB 文件来恢复数据。

命令与配置
  • SAVE: 立即执行 RDB 快照。
  • BGSAVE: 在后台异步执行 RDB 快照,不会阻塞客户端请求。
  • CONFIG SET save <policy>: 配置 RDB 自动快照策略,如 CONFIG SET save "900 1 300 10 60 10000" 表示在900秒内如果有1个key变化,则执行快照;300秒内有10个key变化也执行快照;60秒内有10000个key变化同样执行快照。
案例:定期自动备份

假设我们有一台生产环境的 Redis 服务器,需要每天凌晨执行一次完整的数据备份,可以采用以下策略:

  1. 在 Redis 配置文件中设置自动快照策略:

    save ""
    
  2. 使用 cron 定时任务在凌晨执行 BGSAVE 命令:

    0 0 * * * redis-cli -h <host> -p <port> bgsave > /dev/null 2>&1
    

    这样,每天凌晨都会在 Redis 的数据目录生成最新的 RDB 文件。

AOF 日志(Append Only File)

AOF 是 Redis 的另一种持久化机制,它会记录所有写入操作的命令,当 Redis 重启时,可以通过重放 AOF 文件中的命令来恢复数据。

命令与配置
  • CONFIG SET appendonly yes: 开启 AOF 持久化。
  • CONFIG SET appendfsync <policy>: 设置 AOF 刷新策略,可选值有 alwayseverysecno
  • BGREWRITEAOF: 优化 AOF 文件,去除冗余命令。
案例:AOF 日志优化与备份

为了保证数据的安全性和性能,我们通常将 AOF 刷新策略设为 everysec,以每秒一次的频率同步数据至磁盘,同时定期执行 BGREWRITEAOF 来优化 AOF 文件。

此外,可以结合 AOF 日志的备份策略,例如,使用 rsync 或其他工具定期将 AOF 文件复制到远程服务器上,实现异地备份。

混合使用 RDB 与 AOF

RDB 和 AOF 各有优势和局限性,实际应用中,通常会结合使用两者,以达到最佳的数据保护效果。

  • RDB 适合全量数据恢复,速度快,占用磁盘空间少。
  • AOF 更适合增量数据恢复,可以提供更细粒度的数据保护,但文件体积大,恢复时间较长。

Redis 数据恢复实践

RDB 恢复

当 Redis 需要从 RDB 文件恢复数据时,只需在启动时指定 RDB 文件即可。如果 Redis 配置文件中已启用 RDB,那么在正常启动过程中会自动加载最新的 RDB 文件。

AOF 恢复

AOF 恢复相对简单,只要 AOF 功能已开启,Redis 在启动时会自动读取 AOF 文件并重放所有写入命令,从而恢复数据。

案例:灾难恢复演练

假设我们的主 Redis 实例发生硬件故障,需要从备份中恢复数据。我们有以下几种选择:

  1. 从 RDB 文件恢复:找到最近的 RDB 快照文件,使用该文件启动一个新的 Redis 实例。这种方法快速,但可能会丢失最后一次 RDB 备份后的数据更改。

  2. 从 AOF 文件恢复:如果 AOF 功能已启用,可以从最新的 AOF 文件恢复数据,这将提供更接近故障前的数据状态。但是,如果 AOF 文件很大,恢复过程可能比较耗时。

  3. 混合恢复:可以先使用 RDB 文件快速恢复大部分数据,然后应用 AOF 文件中自上次 RDB 快照以来的所有更改,以获得最完整的数据状态。

结论

在设计 Redis 的数据备份与恢复策略时,应综合考虑业务需求、数据安全性和系统性能。RDB 快照适合定期全量数据备份,而 AOF 日志则提供了更细粒度的数据保护。通过合理规划备份策略和定期进行灾难恢复演练,可以有效降低数据丢失的风险,保障业务连续性和数据完整性。


喜欢博主的同学,请给博主一丢丢打赏吧↓↓↓您的支持是我不断创作的最大动力哟!感谢您的支持哦😘😘😘
打赏下吧

💝💝💝如有需要请大家订阅我的专栏【Redis系列】哟!我会定期更新相关系列的文章
💝💝💝关注!关注!!请关注!!!请大家关注下博主,您的支持是我不断创作的最大动力!!!

Redis相关文章索引文章链接
Redis基础教程(一):redis配置Redis基础教程(一):redis配置
Redis基础教程(二):redis数据类型Redis基础教程(二):redis数据类型
Redis基础教程(三):redis命令Redis基础教程(三):redis命令
Redis基础教程(四):redis键(key)Redis基础教程(四):redis键(key)
Redis基础教程(五):string字符串Redis基础教程(五):string字符串
Redis基础教程(六):redis 哈希(Hash)Redis基础教程(六):redis 哈希(Hash)
Redis基础教程(七):redis列表(List)Redis基础教程(七):redis列表(List)
Redis基础教程(八):redis集合(Set)Redis基础教程(八):redis集合(Set)
Redis基础教程(九):redis有序集合Redis基础教程(九):redis有序集合
Redis基础教程(十):HyperLogLogRedis基础教程(十):HyperLogLog
Redis基础教程(十一):Redis 发布订阅Redis基础教程(十一):Redis 发布订阅
Redis基础教程(十二):Redis事务Redis基础教程(十二):Redis事务
Redis基础教程(十三):Redis lua脚本Redis基础教程(十三):Redis lua脚本
Redis基础教程(十四):Redis连接Redis基础教程(十四):Redis连接
Redis基础教程(十五):Redis GEO地理信息查询与管理Redis基础教程(十五):Redis GEO地理信息查询与管理
Redis基础教程(十六):Redis StreamRedis基础教程(十六):Redis Stream

❤️❤️❤️觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄
💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍
🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

相关文章:

Redis基础教程(十七):Redis数据备份与恢复

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

基于FPGA的千兆以太网设计(1)----大白话解释什么是以太网

1、什么是以太网? 还记得初学以太网的时候,我就被一大堆专业名词给整懵了:什么以太网,互联网,MAC,IP,局域网,万维网,网络分层模型等等等等。慢着!我学的不是以太网吗?怎么出来这么一大堆东西? 啊!以太网究竟是什么?别急,我接下来就尽量用通俗的大白话来给你解释…...

wordpress的restfull API使用教程,之如何用postman调试API,以便能使用vue等前端框架开发主题

文章目录 API开发手册在postman中调试这里以 post 一篇文章为例&#xff0c;讲解如何调试&#xff1a; 步骤 1&#xff1a;生成应用密码步骤 2&#xff1a;配置Postman步骤 3&#xff1a;创建文章 参考链接 API开发手册 官方API手册&#xff1a;https://developer.wordpress.o…...

刷题刷题刷题

P1123 取数游戏 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路&#xff1a; 从1,1开始dfs&#xff0c;若行数x>n则立马刷新最大值退出搜索&#xff0c;若y>m则进入下一行从第一列开始搜索即x1,y1&#xff0c;对当前的搜索点x,y的八个方向进行1,因为不能相邻 AC:…...

【Spring Boot】统一异常处理

目录 统一异常处理一. 概念二. 全局异常处理三. 处理特定异常 统一异常处理 一. 概念 其实统一异常是运用了AOP&#xff08;对某一类事情的集中处理&#xff09;的思维&#xff0c;简单概括就是在我们进行前后端数据交互的时候&#xff0c;抛出的任何的异常都能够自动捕获然后…...

java —— tomcat 部署项目

一、通过 war 包部署 1、将项目导出为 war 包&#xff1b; 2、将 war 包放置在 tomcat 目录下的 webapps 文件夹下&#xff0c;该 war 包稍时便自动解析为项目文件夹&#xff1b; 3、启动 tomcat 的 /bin 目录下的 startup.bat 文件&#xff0c;此时即可从浏览器访问项目首页…...

数据库的优点和缺点分别是什么

数据库作为数据存储和管理的核心组件&#xff0c;具有一系列显著的优点&#xff0c;同时也存在一些潜在的缺点。以下是对数据库优点和缺点的详细分析&#xff1a; 数据库的优点 数据一致性&#xff1a;数据库通过事务管理、锁机制、并发控制等技术手段&#xff0c;确保多个用户…...

考研数学暑期规划|50天吃透1000+660!

1000660这个组合当然可以 只不过1000的难度并不适合大多数人&#xff0c;很多同学跟的是张宇老师&#xff0c;但是最后却因为张宇1000题太难而改用其他的习题册比如880或者严选题之类的 当然&#xff0c;如果你的目标分数是120&#xff0c;可以去做1000题&#xff0c;因为100…...

GPT-5 一年半后发布?我们可能所受影响与应用领域

前言&#xff1a; IT之家6月22日消息&#xff0c;在美国达特茅斯工程学院周四公布的采访中&#xff0c;OpenAI首席技术官米拉穆拉蒂被问及GPT-5是否会在明年发布&#xff0c;给出了肯定答案并表示将在一年半后发布。此外&#xff0c;穆拉蒂在采访中还把GPT-4到GPT-5的飞跃描述…...

CSS上下悬浮特效

要实现一个上下悬浮的特效&#xff0c;可以使用CSS的keyframes规则和动画属性。以下是一个简单的示例&#xff1a; 代码示例 /* 定义一个名为floating的动画 */ keyframes floating {0% {transform: translateY(0); /* 初始位置 */}50% {transform: translateY(-4px); /* 向上…...

Knife4j的原理及应用详解(三)

本系列文章简介&#xff1a; 在当今快速发展的软件开发领域&#xff0c;API&#xff08;Application Programming Interface&#xff0c;应用程序编程接口&#xff09;作为不同软件应用之间通信的桥梁&#xff0c;其重要性日益凸显。随着微服务架构的兴起&#xff0c;API的数量…...

Android约束布局的概念与属性(1)

目录 1&#xff0e;相对定位约束2&#xff0e;居中和偏移约束 约束布局&#xff08;ConstraintLayout&#xff09;是当前Android Studio默认的布局方式&#xff0c;也是最灵活的一种布局方式。约束布局推荐使用所见即所得的模式进行布局&#xff0c;约束布局的大部分布局可以通…...

阿里巴巴开源自然语音交互框架;在抱抱脸上使用LivePortrait;58种提示技术的工具库

✨ 1: FunAudioLLM FunAudioLLM是一个为人类和大型语言模型&#xff08;LLMs&#xff09;之间自然语音交互打造的语音理解和生成基础框架。 FunAudioLLM 是阿里巴巴集团Tongyi SpeechTeam推出的用于增强人类与大语言模型&#xff08;LLM&#xff09;自然语音交互的框架。该框…...

《算法笔记》总结No.5——递归

一.分而治之 将原问题划分为若干个规模较小而结构与原问题相同或相似的子问题&#xff0c;然后分别解决这些子问题&#xff0c;最后合并子问题的解&#xff0c;即可得到原问题的解&#xff0c;步骤抽象如下&#xff1a; 分解&#xff1a;将原问题分解为若干子问题解决&#x…...

鸿蒙小练习

bean对象 export class BannerImage{id:numberurl:stringtargetUrl:stringproductId:numberconstructor(id: number, url: string, targetUrl: string, productId: number) {this.id idthis.url urlthis.targetUrl targetUrlthis.productId productId} }export class d…...

谷粒商城-个人笔记(集群部署篇二)

前言 ​学习视频&#xff1a;​Java项目《谷粒商城》架构师级Java项目实战&#xff0c;对标阿里P6-P7&#xff0c;全网最强​学习文档&#xff1a; 谷粒商城-个人笔记(基础篇一)谷粒商城-个人笔记(基础篇二)谷粒商城-个人笔记(基础篇三)谷粒商城-个人笔记(高级篇一)谷粒商城-个…...

Python面试题-7

21. 请解释Python中的元组。 Python中的元组&#xff08;Tuple&#xff09;是一种内置的数据结构&#xff0c;它有如下特点&#xff1a; 有序性&#xff1a;元组中的元素是有序的&#xff0c;每个元素都有一个索引&#xff0c;索引从0开始。不可变性&#xff1a;一旦元组被创…...

微信⼩程序的电影推荐系统-计算机毕业设计源码76756

摘 要 随着互联网的普及和移动互联网的发展&#xff0c;人们对于获取信息的便捷性和高效性要求越来越高。电影作为一种受众广泛喜爱的娱乐方式&#xff0c;电影推荐系统的出现为用户提供了更加个性化和精准的电影推荐服务。微信小程序作为一种轻量级应用形式&#xff0c;在用…...

理解与解读李彦宏在2024世界人工智能大会的发言:应用优先于技术

2024年7月4日&#xff0c;世界人工智能大会暨人工智能全球治理高级别会议在上海世博中心举行。百度创始人、董事长兼首席执行官李彦宏在产业发展主论坛上提出了一个引人深思的观点&#xff1a;“大家不要卷模型&#xff0c;要卷应用&#xff01;”他强调了一个重要的观点&#…...

数字化打破传统,引领企业跨界经营与行业生态盈利

在当今数字化时代&#xff0c;传统的赚货差思路正面临着巨大的挑战。然而&#xff0c;数字化的崛起为企业提供了突破传统束缚的机会&#xff0c;促使其转向跨界经营&#xff0c;并通过行业生态经营获取利润。 首先&#xff0c;数字化打破了传统赚货差思路的局限性。以往&…...

树莓派超全系列教程文档--(61)树莓派摄像头高级使用方法

树莓派摄像头高级使用方法 配置通过调谐文件来调整相机行为 使用多个摄像头安装 libcam 和 rpicam-apps依赖关系开发包 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 配置 大多数用例自动工作&#xff0c;无需更改相机配置。但是&#xff0c;一…...

【开发技术】.Net使用FFmpeg视频特定帧上绘制内容

目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法&#xff0c;当前调用一个医疗行业的AI识别算法后返回…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

什么是VR全景技术

VR全景技术&#xff0c;全称为虚拟现实全景技术&#xff0c;是通过计算机图像模拟生成三维空间中的虚拟世界&#xff0c;使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验&#xff0c;结合图文、3D、音视频等多媒体元素…...

抽象类和接口(全)

一、抽象类 1.概念&#xff1a;如果⼀个类中没有包含⾜够的信息来描绘⼀个具体的对象&#xff0c;这样的类就是抽象类。 像是没有实际⼯作的⽅法,我们可以把它设计成⼀个抽象⽅法&#xff0c;包含抽象⽅法的类我们称为抽象类。 2.语法 在Java中&#xff0c;⼀个类如果被 abs…...

如何在Windows本机安装Python并确保与Python.NET兼容

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…...

2025.6.9总结(利与弊)

凡事都有两面性。在大厂上班也不例外。今天找开发定位问题&#xff0c;从一个接口人不断溯源到另一个 接口人。有时候&#xff0c;不知道是谁的责任填。将工作内容分的很细&#xff0c;每个人负责其中的一小块。我清楚的意识到&#xff0c;自己就是个可以随时替换的螺丝钉&…...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面&#xff0c;我们会实现这个普通的工厂方法&#xff0c;并且对比这个普通工厂方法和我们直接创建对象的差别在哪里&#xff0c;为什么需要一个工厂&#xff1a; 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类&#xff1a; 两个发…...

python基础语法Ⅰ

python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器&#xff0c;来进行一些算术…...

iOS 项目怎么构建稳定性保障机制?一次系统性防错经验分享(含 KeyMob 工具应用)

崩溃、内存飙升、后台任务未释放、页面卡顿、日志丢失——稳定性问题&#xff0c;不一定会立刻崩&#xff0c;但一旦积累&#xff0c;就是“上线后救不回来的代价”。 稳定性保障不是某个工具的功能&#xff0c;而是一套贯穿开发、测试、上线全流程的“观测分析防范”机制。 …...