Redis 持久化数据

1.基本概念:

        Redis 支持两种主要的持久化方式:RDB (Redis DataBase)和AOF (Append Only File),用于将内存中的数据持久化到磁盘上,以避免数据在服务器重启或意外故障时丢失。

2.RDB(Redis DataBase):

        将某一个时刻的内存数据,以二进制的方式写入磁盘。

  • 原理:Redis 会在特定的时间间隔或达到特定条件时生成一个数据快照,将所有的数据写入到一个 RDB 文件中。
  • 优点
    • RDB 文件紧凑、体积小,便于备份。
    • 加载 RDB 文件比 AOF 更快,因此适合大数据量的恢复。
    • 适用于周期性的备份,比如每天或每小时一次的备份。
  • 缺点
    • 由于是间隔性的快照,如果 Redis 崩溃,最近一次快照后的数据可能会丢失。
    • 大量数据时,生成快照的过程会消耗 CPU 和内存,影响性能。

3.AOF(Append Only File):

               每一次写操作都记录到日志文件中的方式。

  • 原理:Redis 将每一条写入命令追加写入到 AOF 文件中,Redis 重启时通过重放 AOF 文件中的命令来恢复数据。
  • 优点
    • 数据安全性更高,可以设置同步策略保证几乎不丢失数据(比如每秒同步一次)。
    • AOF 文件是命令日志,易于理解和修改。
  • 缺点
    • AOF 文件比 RDB 文件大,恢复速度较慢。
    • 需要定期对 AOF 文件进行重写以减小文件大小。

3. 混合持久化

        Redis 4.0 及之后版本引入了混合持久化模式,将 RDB 和 AOF 的优势结合。即在重写 AOF 文件时,Redis 将同时生成一个 RDB 快照,并将最近的操作记录追加到 AOF 中。这样既能享受 RDB 的快速恢复,又能保证 AOF 的高安全性。

  • 原理:当 Redis 需要将数据持久化到磁盘时,会保存一个 RDB 快照,并在快照的基础上追加 AOF 文件中的命令。这样可以减少 AOF 文件的大小,同时提高数据恢复的效率。
  • 过程
    • Redis 启动时,首先通过 RDB 快照恢复数据,然后通过 AOF 文件补充快照后发生的变更。
    • 因为 AOF 只需要记录 RDB 之后的变更,所以文件大小减少,加载速度更快。

4.RDB和AOF的区别:

(1).存储方式:

        RDB :通过快照(snapshot)机制,将 Redis 中的数据集以二进制文件的方式写入硬盘;

        AOF :通过将 Redis 服务器执行的所有写命令(例如 set、del、incrby 等)记录在 AOF 文件中,写入方式是追加写入

(2).数据恢复

        RDB:恢复时加载最近一次生成的快照。这意味着数据可能会丢失最近的一些操作

        AOF:记录每次写操作,恢复时按顺序重放这些操作。因此,它能恢复最近的所有操作,数据丢失的风险更小

(3).性能

        RDB:由于 RDB 是定时执行快照,所以它对性能影响较小,适合对性能要求高、数据恢复精度要求不高的场景。

        AOF:AOF 每次写入操作都会记录,尤其在同步频率较高时(appendfsync 设为 always),对性能影响较大。不过在日志文件重写时,Redis 会压缩 AOF 文件,减少开销。

(4).数据一致性

        RDB:RDB 只能在设定的快照时间点恢复数据,因此可能会丢失快照之后的一些数据。

        AOF:AOF 提供更高的数据一致性,因为它记录了每一次操作,几乎不会丢失数据。

(5).文件体积

        RDB:由于 RDB 以二进制快照的形式存储,文件体积通常较小。

        AOF:AOF 文件随着时间推移可能会变得很大,因为它记录了所有写操作。不过,Redis 提供了日志重写机制,可以通过重写来压缩文件。

(6).使用场景

        RDB 适用于:

  • 数据一致性要求不高的场景(如缓存场景)。
  • 系统负载较重时,减少持久化对性能的影响。
  • 需要快速加载大数据集的场景。

        AOF适用于:

  • 数据一致性要求较高的场景。
  • 希望最小化数据丢失的情况。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

循环中用sleep

echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);} 没有用sleep,快速消耗cpu和内存 使用sleep后效果 echo <pre>;for ($i0;$i<10000000;$i){var_dump($i);usleep(1000);//php 暂停0.001秒} 总结&#xff1a;sleep能释放资源(cpu和内存)&#xff0c;但是运…

2025校招内推-招联金融

【投递方式】 直接扫下方二维码&#xff0c;或点击内推官网https://wecruit.hotjob.cn/SU61025e262f9d247b98e0a2c2/mc/position/campus&#xff0c;使用内推码 igcefb 投递&#xff09; 【招聘岗位】 后台开发 前端开发 数据开发 数据运营 算法开发 技术运维 软件测试 产品策…

LeetCode 面试经典150题 191.位1的个数

Java中的算术右移和逻辑右移的区别 题目&#xff1a;编写一个函数&#xff0c;获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数&#xff08;也被称为汉明重量&#xff09;。 设置位的个数即二进制中1的个数。 思路&#xff1a;方法一&#xff1a;因为正数的原…

【永磁同步电机(PMSM)】 4. 同步旋转坐标系仿真模型

【永磁同步电机&#xff08;PMSM&#xff09;】 4. 同步旋转坐标系仿真模型 1. Clarke 变换的模型与仿真1.1 Clarke 变换1.2 Clarke 变换的仿真模型 2. Park 变换的模型与仿真2.1 Park 变换2.2 Park 变换的仿真模型 3. Simscape标准库变换模块3.1 abc to Alpha-Beta-Zero 模块3…

java反射基础知识

1.java的反射机制 Java 反射机制是在运行状态中&#xff0c;对于任意一个类&#xff0c;都能够知道这个类的所有属性和方法&#xff1b;对于任意一个对象&#xff0c;都能够调用它的任意方法和属性&#xff1b;这种动态获取信息以及动态调用对象方法的功能称为 Java 语言的反射…

学生管理系统1.0版本

学生管理系统1.0版本有5个功能&#xff0c;即添加学生、删除学生、修改学生、查看全部学生、退出系统。 里面对添加重复学号、删除和修改不存在的学号等问题都有相应的解决办法。 代码区&#xff1a; Student.java package student;//快捷键Altinsert public class Student …

Machine Learning Specialization 学习笔记(4)

文章目录 前言一、模型评估训练集常规训练集线性回归逻辑回归 交叉验证集 偏差与方差正则化 学习曲线数据集的添加&#xff08;数据增强&#xff09;迁移学习精确率与召回率 二、决策树基本概念决策树的工作原理决策树的优点决策树的缺点决策树算法的变体决策树在Python中的实现…

Shell 脚本学习

Shell学习 Shell 脚本 Shell 是一个用 C 语言编写的程序&#xff0c;它是用户使用 Linux 的桥梁。Shell 既是一种命令语言&#xff0c;又是一种程序设计语言。 Shell 是指一种应用程序&#xff0c;这个应用程序提供了一个界面&#xff0c;用户通过这个界面访问操作系统内核的服…

xxl-job使用总结

xxl-job从入门到入土 xxl-job介绍 xxl-job是一个分布式任务调度平台&#xff0c;其核心设计目标是开发迅速、学习简单、轻量级、易扩展。xxl-job支持调度中心集群和执行器集群。 xxl-job开源项目 xxl-job使用 xxl-job整合SpringBoot 引入xxl-job的依赖 <dependency>…

ArcGIS核密度分析(栅格处理范围与掩膜分析)

多时候我们在进行栅格分析的时候&#xff0c;处理的结果不能完全覆盖我们需要的范围。 比如&#xff0c;我们对点数据进行密度分析、栅格插值等。比如下图 为什么会如此呢&#xff1f; 那是因为在做这个密度分析或者栅格插值的时候&#xff0c;默认是以点的四至范围来生成的&am…

LeetCode 热题 100 回顾9

干货分享&#xff0c;感谢您的阅读&#xff01;原文见&#xff1a;LeetCode 热题 100 回顾_力code热题100-CSDN博客 一、哈希部分 1.两数之和 &#xff08;简单&#xff09; 题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标…

算法之逻辑斯蒂回归(Logistic regression)

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 逻辑斯蒂回归&#xff08;Logistic Regression&#xff09;是统计学中一种广泛应用于二分类问题的算法。它的主要目标是预测二分类问题中的事件发生的概率。尽管名字里有“回归”&#xff0c;但逻…

2024已然过半,AI技术卷到哪儿了?

可以说&#xff0c;科技的发展真的是日新月异&#xff0c;2024年年初&#xff0c;大模型Sora的出现&#xff0c;改变了短视频行业的演变方向&#xff0c;使得AI技术不再只是停留在文生文&#xff0c;文生图阶段&#xff0c;而是发展到了文生视频领域。2024年5月&#xff0c;回忆…

Java笔试面试题AI答之设计模式(5)

文章目录 21. 简述Java什么是适配器模式 ?适配器模式的主要组成部分包括&#xff1a;适配器模式的实现方式主要有两种&#xff1a;适配器模式的优点&#xff1a;适配器模式的缺点&#xff1a;示例说明&#xff1a; 22. 请用Java代码实现适配器模式的案例 &#xff1f; 21. 简述…

OpenCL 学习(2)---- OpenCL Platform 和 Device

目录 OpenCL PlatformOpenCL Device参考代码 OpenCL Platform opencl 支持的 Platform 可以使用 clGetPlatformIDs 函数查询&#xff0c;函数原型如下&#xff1a; clGetPlatformIDs(cl_uint /* num_entries */,cl_platform_id * /* platforms */,cl_uint * …

深度之眼(三十)——pytorch(一)--深入浅出pytorch(附安装流程)

文章目录 一、前言一、pytoch二、六个部分三、如何学习四、学习路径&#xff08;重要)五、安装pytorch5.1 坑15.2 坑2 一、前言 我看了下目录 第一章和第二章都是本科学的数字图像处理。 也就是这一专栏&#xff1a;数字图像实验。 所以就不准备学习前两章了&#xff0c;直接…

神奇的可变模板参数的应用(C++标准库双向链表 list 中的emplace函数实现)

我们先来看一个可以构造任意对象的函数&#xff1a; /// <summary> /// 可以构造任意对象的函数 /// </summary> /// <typeparam name"MyClass">要转换对象的类型</typeparam> /// <typeparam name"...MyClassConstructorParameterT…

新手上路:在Windows CPU上安装Anaconda和PyCharm

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一. 确认自己是CPU为什么选择CPU教程&#xff1f;GPU与CPU的区别如何判断自己是CPU 二. Anaconda 安装包 和 Pycharm 安装包步骤1&#xff1a;下载Anaconda步骤2&am…

摆脱困境并在iPhone手机上取回删除照片的所有解决方案

您是否无意中从 iPhone 中删除了照片&#xff1f;您&#xff0c;无需惊慌&#xff0c;因为您可以使用以下方法恢复所有照片。 如果您长时间使用 iPhone&#xff0c;您应该知道 iOS 提供了许多 Android 不提供的备份功能。例如&#xff0c;您的所有照片都会自动备份到 iCloud 存…

5分钟内理解 .prototype 链 | 2024

在JavaScript的世界里,原型(prototype)系统是一个常被讨论但不易掌握的概念。作为JavaScript继承模型的基石,理解原型对于构建大型应用或进行对象操作至关重要。让我们一起探索这个迷人的话题,揭开原型系统的神秘面纱。 什么是原型? 在JavaScript中,每个对象都有一个内部属性[…