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.mfbz.cn/a/882084.html

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

相关文章

【Linux】Linux的基本指令(1)

A clown is always a clown.💓💓💓 目录 ✨说在前面 🍋知识点一:Linux的背景 •🌰1.Unix发展的历史 •🌰2.Linux发展历史 •🌰3.企业应用现状 •🌰4.发行版本 &…

jmeter得到的文档数据处理

通过前面jmeter得到的输出文档,这里是txt文档,里面包含了很多条数据,每条数据的结构如下: 【request】 uuid:xxxxxxx timestamp:xxxxxxxx No.x question:xxxxxxx 【response】 code&#…

windows cuda12.1 pytorch gpu环境配置

安装cuda12.1 nvcc -V conda创建pythong3.10环境 conda create -n llama3_env python3.10 conda activate llama3_env 安装pytorch conda install pytorch torchvision torchaudio pytorch-cuda11.8 -c pytorch -c nvidia gpu - Pytorch version for cuda 12.2 - Stack Ov…

传输层 IV(TCP协议——流量控制、拥塞控制)【★★★★】

(★★)代表非常重要的知识点,(★)代表重要的知识点。 一、TCP 流量控制(★★) 1. 利用滑动窗口实现流量控制 一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得…

powerbi -L10-文件夹内的文件名

powerbi -L10-文件夹内的文件名 Folder.Contents letSource Folder.Contents("\\your_folder\ your_folder "),#"Removed Other Columns" Table.SelectColumns(Source,{"Name", "Date modified", "Folder Path"}), in#&q…

STM32篇:通用输入输出端口GPIO

一.什么是GPIO? 1.定义 GPIO是通用输入输出端口的简称,简单来说就是STM32可控制的引脚STM32芯片的GPIO引脚与 外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。 简单来说我们可以控制GPIO引脚的电平变化,达到我们的各种目的…

MQ(RabbitMQ)笔记

初识MQ 同步调用优缺点 异步调用优缺点 总结: 时效性要求高,需要立刻得到结果进行处理--->同步调用 对调用结果不关心,对性能要求高,响应时间短--->异步调用

花园管理系统

基于springbootvue实现的花园管理系统 (源码L文ppt)4-074 4功能结构 为了更好的去理清本系统整体思路,对该系统以结构图的形式表达出来,设计实现该“花开富贵”花园管理系统的功能结构图如下所示: 图4-1 系统总体结…

植物大战僵尸【源代码分享+核心思路讲解】

植物大战僵尸已经正式完结,今天和大家分享一下,话不多说,直接上链接!!!(如果大家在运行这个游戏遇到了问题或者bug,那么请私我谢谢) 大家写的时候可以参考一下我的代码思…

Nginx反向代理出现502 Bad Gateway问题的解决方案

🎉 前言 前一阵子写了一篇“关于解决调用百度翻译API问题”的博客,近日在调用其他API时又遇到一些棘手的问题,于是写下这篇博客作为记录。 🎉 问题描述 在代理的遇到过很多错误码,其中出现频率最高的就是502&#x…

75、Python之函数式编程:生成器的核心方法及更多使用场景

引言 Python中的函数式编程,依托生成器,可以实现惰性求值的特性。但是,生成器其实还可以有更多的使用场景。本文就聚焦生成器,再次聊聊生成器中的主要方法以及更多的使用场景。 本文的主要内容有: 1、生成器的核心方…

解决DockerDesktop启动redis后采用PowerShell终端操作

如图: 在启动redis容器后,会计入以下界面 : 在进入执行界面后如图: 是否会觉得界面过于单调,于是想到使用PowerShell来操作。 步骤如下: 这样就能使用PowerShell愉快地敲命令了(颜值是第一生…

SVM原理

SVM 这里由于过了很长时间 博主当时因为兴趣了解了下 博主现在把以前的知识放到博客上 作为以前的学习的一个结束 这些东西来自其他资料上 小伙伴看不懂英文的自行去翻译下吧 博主就偷个懒了 多维空间和低维空间 不一样的分法,将数据映射到高维 &…

vue源码分析(九)—— 合并配置

文章目录 前言1.vue cli 创建一个基本的vue2 项目2.将mian.js文件改成如下3. 运行结果及其疑问? 一、使用 new Vue 创建过程的 2 种场景二、margeOption的详细说明1.margeOption的方法地址2.合并策略的具体使用3.defaultStrat 默认策略方法 三:以生命周期…

基于单片机的水位检测系统仿真

目录 一、主要功能 二、硬件资源 三、程序编程 四、实现现象 一、主要功能 基于STC89C52单片机,DHT11温湿度采集温湿度,滑动变阻器连接ADC0832数模转换器模拟水位传感器检测水位,通过LCD1602显示信息,然后在程序里设置好是否…

docker启动mysql未读取my.cnf配置文件问题

描述 在做mysql主从复制配置两台mysql时,从节点的my.cnf配置为: [mysqld] datadir /usr/local/mysql/slave1/data character-set-server utf8 lower-case-table-names 1 # 主从复制-从机配置# 从服务器唯一 ID server-id 2 # 启用中继日志 relay-l…

【编程底层原理】Java对象头的详细结构、锁机制及其优化技术,以及逃逸分析和JIT技术在性能优化中的作用

一、引言 在Java的多线程世界中,对象头和锁机制是确保数据一致性和程序性能的关键。本文将带你深入探索Java对象头的结构、锁机制的工作原理,以及逃逸分析和即时编译(JIT)技术如何助力性能优化。 二、Java对象头 1. 对象头的组…

6.数据库-数据库设计

6.数据库-数据库设计 文章目录 6.数据库-数据库设计一、设计数据库的步骤二、绘制E-R图三、关系模式第一范式 (1st NF)第二范式 (2nd NF)第三范式 (3nd NF)规范化和性能的关系 一、设计数据库的步骤 收集信息 与该系统有关人员进行交流、座谈,充分了解用户需求&am…

8. 防火墙

8. 防火墙 (1) 防火墙的类型和结构 防火墙的类型和结构可以根据其在网络协议栈中的过滤层次和实现方式进行分类。常见的防火墙类型包括: 包过滤防火墙:工作在网络层(OSI模型的第3层),主要检查IP包头的信息,如源地址、目的地址、端口号等。电路级网关防火墙:工作在会话层…

操作系统简介

大学的操作系统课程是计算机科学与技术专业的重要基础课程之一,旨在帮助学生理解和掌握现代操作系统的基本原理和核心技术。这门课程不仅涵盖操作系统的理论知识,还包括实践内容,帮助学生在实际应用中理解操作系统的工作机制。以下是操作系统…