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 文件的大小。

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

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

相关文章

DevOps引领数字化转型新趋势

DevOps帮助数字化转型 在数字化转型的大潮中,DevOps作为一种文化、运动和实践,已经成为推动企业快速适应市场变化、提高竞争力的关键因素。DevOps的核心在于打破开发(Development)和运维(Operations)之间的…

ctfshow

1,web21 Basic认证采用Base64加密方式,Base64解码字符串发现是 用户名:密码 的格式进行Base64编码。 密码shark63 2,web22 用 子域名扫描器 扫出flag.ctf.show拿到flag,但这个域名已经没了所以就直接交的官方提供的flag。 3,web23 这段PHP代码是一个简单…

从 0 到 1 掌握部署第一个 Web 应用到 Kubernetes 中

文章目录 前言构建一个 hello world web 应用项目结构项目核心文件启动项目 检查项目是否构建成功 容器化我们的应用编写 Dockerfile构建 docker 镜像推送 docker 镜像仓库 使用 labs.play-with-k8s.com 构建 Kubernetes 集群并部署应用构建 Kubernetes 集群环境编写部署文件 总…

数据结构与算法——1120——时间空间效率问题求边界值

目录 1、效率问题 1、时间复杂度 1、O(1) 2、O(n) 3、O(n) 或O(n*log2n)——n倍的log以2为底n的对数 例题 4、O(n) 2、空间复杂度 3、数组和链表 2、面试题之求边界值 题目 解答 (1)-i (2)~i (3&#x…

爬虫与反爬-Ja3指纹风控(Just a moment...)处理方案及参数说明

概述:本文将针对 Ja3 指纹检测风控进行处理,举例了一个案例并使用两种不同的破解方案进行突破,同时深入了解指纹间不同字符所代表的含义 指纹检测背景: 1、每一个设备、软件都有独属于自己的设备信息、版本号、加密算法、椭圆算…

【JUC-JMM】Java Memory Model Java内存模型

Java内存模型--JMM 一、JMM是什么?二、Happens-Before原则三、JMM有什么用? 一、JMM是什么? JMM,全拼Java Memory Model,翻译过来就是Java内存模型。 那么,我们不禁思索,Java内存模型有什么用&…

SpringAI:Java 开发的智能新利器

一、SpringAI 简介 随着人工智能技术的飞速发展,越来越多的开发者开始探索如何将 AI 能力集成到现有的应用中来提升产品的智能化水平。Spring AI 正是为 Java 开发者提供的一款强大的 AI 框架,使得这一集成过程变得前所未有的简单和高效。 本文将深入探…

在Excel中处理不规范的日期格式数据并判断格式是否正确

有一个Excel表,录入的日期格式很混乱,有些看着差不多,但实际多一个空格少一个字符很难发现,希望的理想格式是 1980-01-01,10位,即:“YYYY-mm-dd”,实际上数据表中这样的格式都有 19…

【我在CSDN成长】我的五周年创作纪念日

感叹 五年的时光匆匆而过, 像一阵风,拂过岁月的湖面, 泛起层层涟漪,又悄然离去。 曾经的欢笑与泪水, 那些奋斗的日夜, 如同电影般在脑海中放映, 却已成为遥远的回忆。 五年,说长不长…

Jmeter中的定时器

4)定时器 1--固定定时器 功能特点 固定延迟:在每个请求之间添加固定的延迟时间。精确控制:可以精确控制请求的发送频率。简单易用:配置简单,易于理解和使用。 配置步骤 添加固定定时器 右键点击需要添加定时器的请求…

BERT 详解

BERT简介 BERT(Bidirectional Encoder Representations from Transformers)是由 Google 在 2018 年提出的一种预训练语言模型。BERT 在自然语言处理(NLP)领域取得了重大突破,因为它能够有效地捕捉文本的上下文信息&am…

macos 14.0 Monoma 修改顶部菜单栏颜色

macos 14.0 设置暗色后顶部菜单栏还维持浅色,与整体不协调。 修改方式如下:

数据库-MySQL-Dynamic-Datasource源码解析

文章目录 前言一、简介二、整体流程三、核心解析四、总结 前言 多数据源的应用在日常项目中也是很常见的场景。 dynamic-datasource的功能,用起来的确很方便,只需要一个DS注解,加上一些简单的配置即可完成多数据源的切换。究竟是怎么做到的…

YB2503HV:高效率降压IC,助力电动车、太阳能设备等领域的能源转换

今天我要向大家介绍一款引人注目的产品—— YB2503HV 100V 3A SOP8内置MOS 高效率降压IC。这款单片集成芯片具备可设定输出电流的开关型降压恒压驱动器功能,可广泛应用于电动车、太阳能设备、电子电池充电等领域。让我们一起来看看它的特点和应用吧! 首先…

架构-微服务架构

文章目录 前言一、系统架构演变1. 单体应用架构2. 垂直应用架构3. 分布式架构4. SOA 架构5. 微服务架构 二. 微服务架构介绍1. 微服务架构的常见问题2. 微服务架构的常见概念3. 微服务架构的常见解决方案4. 解决方案选型 三. Spring Cloud Alibaba介绍1. 主要功能2. 组件 前言 …

【一个简单的整数问题2——线段树】

题目 代码 下面的两个代码的区别在于modify的分类&#xff0c;modify最简单的分类方式是存在性分类&#xff0c;另一种类似某些query采用的三段式分类&#xff0c;详细见代码 存在性 #include <bits/stdc.h> using namespace std; using ll long long; const int N 1…

通用网络安全设备之【防火墙】

概念&#xff1a; 防火墙&#xff08;Firewall&#xff09;&#xff0c;也称防护墙&#xff0c;它是一种位于内部网络与外部网络之间的网络安全防护系统&#xff0c;是一种隔离技术&#xff0c;允许或是限制传输的数据通过。 基于 TCP/IP 协议&#xff0c;主要分为主机型防火…

如何启动 Docker 服务:全面指南

如何启动 Docker 服务:全面指南 一、Linux 系统(以 Ubuntu 为例)二、Windows 系统(以 Docker Desktop 为例)三、macOS 系统(以 Docker Desktop for Mac 为例)四、故障排查五、总结Docker,作为一种轻量级的虚拟化技术,已经成为开发者和运维人员不可或缺的工具。它允许用…

构建英语知识网站:Spring Boot框架解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

Android mk/bp构建工具介绍

零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0c;加上网络上其实没有一个完整的介绍Bluedroid系列的文档&#xff0…