Redis的几种持久化方式

Redis 提供了两种主要的持久化方式,它们分别是:

1. RDB(Redis Database Snapshotting)

RDB 是 Redis 的一种数据持久化方式,它会在指定的时间间隔内对 Redis 中的数据进行快照并保存到硬盘上。

特点:
  • 触发方式:RDB 持久化通常是在满足一定条件时触发的(比如,经过一定数量的写操作或一定的时间间隔后)。
  • 存储方式:RDB 会创建一个包含当前所有数据库数据的快照文件(通常是 dump.rdb),该文件会被保存在磁盘上。
  • 性能:RDB 的写入操作是非阻塞的,不会影响 Redis 的响应性能,因此适用于需要高性能写入的场景。
  • 恢复速度:RDB 快照的恢复速度较快,适合用来恢复大量数据。
  • 数据丢失:RDB 持久化的最大问题是如果 Redis 宕机,可能会丢失自上次快照以来的所有数据(因为它不会记录每个操作,只记录在快照时的数据状态)。
配置:

可以通过 redis.conf 文件中的 save 配置项来设定生成快照的条件,例如:

save 900 1   # 在 900 秒内至少发生 1 次写操作时生成快照
save 300 10  # 在 300 秒内至少发生 10 次写操作时生成快照
save 60 10000 # 在 60 秒内至少发生 10000 次写操作时生成快照

2. AOF(Append Only File)

AOF 是另一种 Redis 的数据持久化方式,它会将 Redis 执行的每一个写操作记录到一个日志文件中,以此来实现持久化。

特点:
  • 触发方式:AOF 持久化是通过将所有写命令追加到日志文件来进行的,每个写命令都会被记录下来,AOF 文件记录的是一个操作的执行历史。
  • 存储方式:AOF 会将每个写操作按顺序追加到文件中,生成一个 .aof 文件(例如 appendonly.aof)。
  • 性能:AOF 会比 RDB 更加消耗性能,因为每次写操作都要追加到 AOF 文件,尤其是在配置为“每次写操作都同步”时,性能开销会更大。
  • 恢复速度:AOF 恢复速度比 RDB 慢,因为它需要重新执行每个写操作,尤其是对于大量数据的情况。
  • 数据丢失:AOF 提供了更高的数据持久化保证,理论上能保证即使 Redis 异常关闭,也不会丢失数据,除非是文件损坏等特殊情况。
AOF 的同步策略:

AOF 持久化提供三种不同的同步策略,控制数据追加到磁盘的方式:

  1. 每次写操作后同步(appendfsync always:每次写操作都会立即同步到磁盘,确保最强的数据安全性,但性能开销较大。
  2. 每秒同步(appendfsync everysec:每秒将 AOF 文件同步到磁盘一次,通常是性能和数据安全的平衡点,这是 Redis 默认的策略。
  3. 从不同步(appendfsync no:不主动进行同步,由操作系统决定何时将数据写入磁盘,性能最好,但存在数据丢失的风险。

3. 混合持久化(RDB + AOF)

Redis 4.0 以后引入了混合持久化模式,在该模式下,Redis 将同时使用 RDB 和 AOF 进行持久化操作。

特点:
  • RDB 快照 + AOF 日志:混合持久化模式结合了 RDB 和 AOF 的优点。Redis 会定期创建 RDB 快照,同时使用 AOF 记录写操作。AOF 文件只记录变更部分,减少了 AOF 文件的大小。
  • 性能和恢复速度的平衡:混合持久化模式能在较短的时间内恢复数据,且减少了 AOF 文件的大小和 I/O 操作。
作用:
  • 当 Redis 启动时,如果同时启用了 RDB 和 AOF 持久化,Redis 会优先使用 RDB 快照来恢复数据,如果 RDB 快照不可用,才会使用 AOF 文件。
  • 混合持久化能够避免在 AOF 写入的同时,造成过大的 I/O 压力。
启用方式:

混合持久化默认启用,只需要在 redis.conf 文件中设置 aof-use-rdb-preambleyes 即可。

总结:

  • RDB:通过快照方式持久化数据,性能较高,但可能丢失最近几次操作的数据。
  • AOF:通过记录每个写操作的日志持久化数据,提供更强的数据持久性,但性能开销较大。
  • 混合持久化(RDB + AOF):结合了 RDB 和 AOF 的优点,提升了数据恢复速度并减少了 AOF 文件的大小。

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

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

相关文章

femor 第三方Emby应用全平台支持v1.0.54更新

femor v1.0.54 版本更新 mpv播放器增加切换后台和恢复时隐藏状态栏的功能修复服务器首页因为连接超时异常的问题 获取路径:【femor 历史版本收录】

如何搭建一个小程序:从零开始的详细指南

在当今数字化时代,小程序以其轻便、无需下载安装即可使用的特点,成为了连接用户与服务的重要桥梁。无论是零售、餐饮、教育还是娱乐行业,小程序都展现了巨大的潜力。如果你正考虑搭建一个小程序,本文将为你提供一个从零开始的详细…

nrm镜像管理工具使用方法

nrm(NPM Registry Manager)是一款专门用于管理 npm 包镜像源的命令行工具。在使用 npm 安装各种包时,默认会从官方的 npm 仓库(registry)获取资源,但有时候由于网络环境等因素,访问官方源可能速…

OpenCV截取指定图片区域

import cv2 img cv2.imread(F:/2024/Python/demo1/test1/man.jpg) cv2.imshow(Image, img) # 显示图片 #cv2.waitKey(0) # 等待按键x, y, w, h 500, 100, 200, 200 # 示例坐标 roi img[y:yh, x:xw] # 截取指定区域 cv2.imshow(ROI, roi) cv2.waitKey(0) cv…

易速鲜花聊天客服机器人的开发(下)

目录 “聊天机器人”项目说明 方案 1 :通过 Streamlit 部署聊天机器人 方案2 :通过 Gradio 部署聊天机器人 总结 上一节,咱们的聊天机器人已经基本完成,这节课,我们要看一看如何把它部署到网络上。 “聊天机器人”…

STM32笔记(串口IAP升级)

一、IAP简介 IAP(In Application Programming)即在应用编程, IAP 是用户自己的程序在运行过程中对 User Flash 的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产 品中的固件程序进行更新升级。 通常实…

斐波那契堆与二叉堆在Prim算法中的性能比较:稀疏图与稠密图的分析

斐波那契堆与二叉堆在Prim算法中的性能比较:稀疏图与稠密图的分析 引言基本概念回顾Prim算法的时间复杂度分析稀疏图中的性能比较稠密图中的性能比较|E| 和 |V| 的关系伪代码与C代码示例结论引言 在图论中,Prim算法是一种用于求解最小生成树(MST)的贪心算法。其性能高度依…

使用argo workflow 实现springboot 项目的CI、CD

文章目录 基础镜像制作基础镜像设置镜像源并安装工具git下载和安装 Maven设置环境变量设置工作目录默认命令最终dockerfile 制作ci argo workflow 模版volumeClaimTemplatestemplatesvolumes完整workflow文件 制作cd argo workflow 模版Workflow 结构Templates 定义创建 Kubern…

BUUCTF—Reverse—不一样的flag(7)

是不是做习惯了常规的逆向题目?试试这道题,看你在能不能在程序中找到真正的flag!注意:flag并非是flag{XXX}形式,就是一个’字符串‘,考验眼力的时候到了! 注意:得到的 flag 请包上 f…

insmod一个ko提供基础函数供后insmod的ko使用的方法

一、背景 在内核模块开发时,多个不同的内核模块,有时候可能需要都共用一些公共的函数,比如申请一些平台性的公共资源。但是,这些公共的函数又不方便去加入到内核镜像里,这时候就需要把这些各个内核模块需要用到的一些…

LangGraph中的State管理

本教程将介绍如何使用LangGraph库构建和测试状态图。我们将通过一系列示例代码,逐步解释程序的运行逻辑。 1. 基本状态图构建 首先,我们定义一个状态图的基本结构和节点。 定义状态类 from langgraph.graph import StateGraph, START, END from typi…

MATLAB中Simulink的基础知识

Simulink是MATLAB中的一种可视化仿真工具, 是一种基于MATLAB的框图设计环境,是实现动态系统建模、仿真和分析的一个软件包,被广泛应用于线性系统、非线性系统、数字控制及数字信号处理的建模和仿真中。 Simulink提供一个动态系统建模、仿真和…

最小生成树-Prim与Kruskal算法

文章目录 什么是最小生成树?Prim算法求最小生成树Python实现: Kruskal算法求最小生成树并查集 Python实现: Reference 什么是最小生成树? 在图论中,树是图的一种,无法构成闭合回路的节点-边连接组合称之为…

关闭AWS账号后,服务是否仍会继续运行?

在使用亚马逊网络服务(AWS)时,用户有时可能会考虑关闭自己的AWS账户。这可能是因为项目结束、费用过高,或是转向使用其他云服务平台。然而,许多人对关闭账户后的服务状态感到困惑,我们九河云和大家一起探讨…

Could not locate device support files.

报错信息:Failure Reason: The device may be running a version of iOS (13.6.1 17G80) that is not supported by this version of Xcode.[missing string: 869a8e318f07f3e2f42e11d435502286094f76de] 问题:xcode15升级到xcode16之后,13.…

Linux文件基础

目录 一、文件类型 二、文件权限 三、权限修改 Linux中一切皆文件,文件目录分布呈树状数据结构,/是根目录,目录的源头 一、文件类型 类型字符说明普通-Linux中最多的一种文件类型,包括 纯文本文件(ASCII)、二进制文件(binary…

自然语言处理基础之文本预处理

一. NLP介绍 1957年, 怛特摩斯会议 二. 文本预处理 文本预处理及作用 将文本转换成模型可以识别的数据 文本转化成张量(可以利用GPU计算), 规范张量的尺寸. 科学的文本预处理可以有效的指导模型超参数的选择, 提升模型的评估指标 文本处理形式 分词 词性标注 命名实体识别…

外卖点餐系统小程序

目录 开发前准备 项目展示项目分析项目初始化封装网络请求 任务1 商家首页 任务分析焦点图切换中间区域单击跳转到菜单列表底部商品展示 任务2 菜单列表 任务分析折扣信息区设计菜单列表布局请求数据实现菜单栏联动单品列表功能 任务3 购物车 任务分析设计底部购物车区域添加商…

彻底理解如何保证ElasticSearch和数据库数据一致性问题

一.业务场景举例 需求: 一个卖房业务,双十一前一天,维护楼盘的运营人员突然接到合作开发商的通知,需要上线一批热门的楼盘列表,上传完成后,C端小程序支持按楼盘的名称、户型、面积等产品属性全模糊搜索热门…

单片机将图片数组调出来显示MPU8_8bpp_Memory_Write

界面显示图片是很常见的需求,使用外挂的FLASH是最常用的方法。但是如果图片需求不大,比如说我们只要显示一个小图标,那么为了节省硬件成本,是不需要外挂一颗FLASH芯片的,我们可以将图标转成数组,存在单片机…