Redis 持久化的手段有哪些 ?RDB 和 AOF 有什么区别 ?

目录

1. Redis 持久化的手段有哪些

2. RDB 和 AOF 有什么区别

2.1 RDB 持久化

2.2  AOF 持久化

2.2.1 AOF 持久化策略有哪些

3. 混合持久化是如何执行的(了解)


1. Redis 持久化的手段有哪些

Redis 持久化的手段有三种:

  1. 快照方式(RDB - Redis Database):将某一时刻的内存数据,以二进制的方式写入磁盘.
  2. 文件追加方式(AOF - Append Only File):记录所有操作的命令,并以文本的形式追加到文件中.
  3. 混合持久化:Redis 4.0 之后新增的方式,混合持久化是集 RDB 和 AOF 二者之长的一种持久化方式.

2. RDB 和 AOF 有什么区别

2.1 RDB 持久化

工作原理:

        RDB 是通过快照的方式,将当前 Redis 内存中的数据以二进制的格式保存到磁盘,快照文件是一个经过压缩的二进制文件,它表示某一时刻,数据库的状态。

优缺点分析:

① 优点

  • 效率高,RDB 以二进制的格式将数据存储磁盘,数据恢复快。
  • 文件小,RDB 生成的快照文件,相较于 AOF 文件小,占用磁盘空间少。

② 缺点

  • 数据丢失,因为 RDB 存储磁盘的动作是定期保存的,所以当 Redis 在快照之间发生故障,则可能丢失部分数据。(如果 10s 保存一次,在 9.99s 故障,那么这 9.99s 的数据都被丢失)

2.2  AOF 持久化

工作原理:

        AOF 持久化是把每次的写操作都以日志的形式追加到文件中,所以它比 RDB 更可靠,数据不易丢失(顶多丢失一条数据,或者 1s 的数据)

优缺点分析:

① 优点

  • 数据完整性好,AOF 持久化是把每一次写操作,都追加文件,所以它的数据更完整。
  • 可读性高,AOF 是一个文本文件,相较于 RDB 的二进制文件来说,可读性要高。
  • 提供了多种持久化策略,Redis 提供了不同的 AOF 持久化策略,可以根据数据的安全和性能进行选择。

② 缺点

  • 文件较大,AOF 的文本文件相较于 RDB 的二进制文件要大,并且是文件追加的形式,所以数据恢复和重启的速度会受到影响。
  • 频繁的写入磁盘,AOF 需要每次进行追加文件,所以会给磁盘带来一定的写入压力。

2.2.1 AOF 持久化策略有哪些

AOF 有三种持久化策略:

  1. alwaysL:每条 Redis 操作命令都会写入磁盘,最多丢失一条数据。
  2. everysec:每秒钟写入一次磁盘,最多丢失一秒的数据。(AOF 默认的持久化策略)
  3. no:不设置写入磁盘的规则,根据当前操作系统来决定。Linux 默认 30s 写入一次磁盘。

3. 混合持久化是如何执行的(了解)

        混合持久化是在 AOF 重写的时候,把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件开头,之后的数据再以 AOF 的格式追加到文件的末尾,它的文件格式如下:

混合持久化的执行流程图:


 

 

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

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

相关文章

开源数据库Mysql_DBA运维实战 (总结)

开源数据库Mysql_DBA运维实战 (总结) SQL语句都包含哪些类型 DDL DCL DML DQL Yum 安装MySQL的配置文件 配置文件:/etc/my.cnf日志目录:/var/log/mysqld.log错误日志:/var/log/mysql/error.log MySQL的主从切换 查看主…

什么是程序化交易接口?执行三步曲是什么?

在股市中的发展过程中,通过不断的更新迭代,从手动交易到自动交易的过程就有了历史的蜕变,那么对于程序化交易接口(Application Programming Interface, API)其实就是指为程序化交易提供的一组定义和规范,允…

物联网工程应用实训室建设方案

一、物联网工程应用系统概述 1.1物联网工程定义 物联网工程(Internet of Things Engineering)是一种以信息技术(IT)来改善实体世界中人们生活方式的新兴学科,它利用互联网技术为我们的日常生活活动提供服务和增益&am…

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)

时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价) 目录 时序预测 | MATLAB实现基于CNN-LSTM卷积长短期记忆神经网络的时间序列预测-递归预测未来(多指标评价)预测结果基本介绍程序设计参考资料 预测结果 基本介绍 MATLAB实现基…

线程面试题-1

看的博客里面总结的线程的八股文 1、线程安全的集合有哪些?线程不安全的呢? 线程安全的: Hashtable:比HashMap多了个线程安全。 ConcurrentHashMap:是一种高效但是线程安全的集合。 Vector:比Arraylist多了个同步化…

安装Vue_dev_tools

Vue控制台出现Download the Vue Devtools extension for a better development experience: 下载Vue_dev_tools,这里给出网盘链接,有Vue2和Vue3的,dev_tools 以Google浏览器为例 点击设置(就是那三个点)->扩展程序->管理扩…

游戏服务端性能测试

导语:近期经历了一系列的性能测试,涵盖了Web服务器和游戏服务器的领域。在这篇文章中,我将会对游戏服务端所做的测试进行详细整理和记录。需要注意的是,本文着重于记录,而并非深入的编程讨论。在这里,我将与…

C# Windows登录界面进行截图,控制鼠标键盘等操作实现(一)

首先常规的账户进程是没办法获取登录界面的信息的,因为登录界面已经不在某个账户下了,登录界面显示了每一个账户的切换。所以得使用System权限的进程。 那么Windows系统究竟是怎么将登录界面与用户桌面隔离开的呢?首先先通过一些Windows操作系…

很好的启用window10专业版系统自带的远程桌面

启用window10专业版系统自带的远程桌面 文章目录 启用window10专业版系统自带的远程桌面前言1.找到远程桌面的开关2. 找到“应用”项目3. 打开需要远程操作的电脑远程桌面功能 总结 前言 Windows操作系统作为应用最广泛的个人电脑操作系统,在我们身边几乎随处可见。…

vite初始化vue3项目(配置自动格式化工具与git提交规范工具)

初始化项目 vite构建vue项目还是比较简单的,简单配置选择一下就行了 初始化命令 npm init vuelatest初始化最新版本vue项目 2. 基本选项含义 Add TypeScript 是否添加TSADD JSX是否支持JSXADD Vue Router是否添加Vue Router路由管理工具ADD Pinia 是否添加pinia…

Nginx反向代理配置流式响应

Nginx 是通过缓存响应内容来处理请求的。也就是说,当 Nginx 接收到完整的响应后,才会将其发送给客户端,所以默认不支持流式响应,这里讲讲 Nginx 反向代理中怎么配置流式响应? 一、使用背景 最近使用 Egg.js 搭建自动化…

【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless

全面测评TDSQL-C Mysql Serverless 文章目录 全面测评TDSQL-C Mysql Serverless前言什么是TDSQL-C Mysql Serverless初始化 TDSQL-C Mysql Serverless新建数据库建立数据表开启外网访问 兼容性SQL文件 导入导出navicat 直接在线传输 构建测试环境准备Python测试脚本准备 Jmeter…

下载安装并使用小乌龟TortoiseGit

1、下载TortoiseGit安装包 官网:Download – TortoiseGit – Windows Shell Interface to Githttps://tortoisegit.org/download/ 2、小乌龟汉化包 在官网的下面就有官方提供的下载包 3、安装

Electron入门,项目运行,只需四步轻松搞定。

electron 简单介绍: 实现:HTML/CSS/JS桌面程序,搭建跨平台桌面应用。 electron 官方文档: [https://electronjs.org/docs] 本文是基于以下2篇文章且自行实践过的,可行性真实有效。 文章1: https://www.cnbl…

Django学习笔记(2)

创建app 属于自动执行了python manage.py 直接在里面运行startapp app01就可以创建app01的项目了 之后在setting.py中注册app01 INSTALLED_APPS ["django.contrib.admin","django.contrib.auth","django.contrib.contenttypes","django.c…

合并jar包导致gradle传递依赖失效

目录 零、背景一、合并jar包1.1、自定义一组jar包1.2、自定义合并jar的任务1.3、定义打包jar的任务 二、发布jar包2.1、未合并jar包之前的合并方式2.2、合并jar包之后的合并方式 三、发现问题3.1、确定gradle中的依赖关系3.2、对比maven是否缺失依赖3.3、对比合并前后的pom.xml…

Source Insight配置Cppcheck做静态测试(Windows)

1.安装cppcheck 先从cppcheck官方网站下载cppcheck的安装包。 注: (1)官网地址:https://sourceforge.net/projects/cppcheck (2)截止2023年8月,官方发布的最新版本是cppcheck-2.11-x64-Setup.…

子集-回溯方法

class Solution {//题解思路//LinkedList<Integer> path new LinkedList<>(); List<List<Integer>> results new ArrayList<>();public List<List<Integer>> subsets(int[] nums) {//主方法中调用方法同时传入指定的参数初始值bac…

【数据挖掘】使用 Python 分析公共数据【01/10】

一、说明 本文讨论了如何使用 Python 使用 Pandas 库分析官方 COVID-19 病例数据。您将看到如何从实际数据集中收集见解&#xff0c;发现乍一看可能不那么明显的信息。特别是&#xff0c;本文中提供的示例说明了如何获取有关疾病在不同国家/地区传播速度的信息。 二、准备您的…

【计算机视觉|生成对抗】改进的生成对抗网络(GANs)训练技术

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Improved Techniques for Training GANs 链接&#xff1a;[1606.03498v1] Improved Techniques for Training GANs (arxiv.org) 摘要 本文介绍了一系列应用于生成对抗网络&#xff08;G…