Redis进阶(4)——结合redis.conf配置文件深入理解 Redis两种数据持久化方案:RDB和AOF

目录

  • 引出
  • 持久化方案
    • RDB
    • AOF
  • Redis的持久化方案
    • RDB
      • 如果采用docker stop关闭
      • 如果采用强制关闭
    • AOF
      • 参数设置
      • 混编方式的加载
      • 让aof进行重写
  • 两种持久化方案的优缺点
    • AOF优缺点
    • RDB优势和劣势
  • 总结

引出


1.Redis数据持久化的两种方式,RDB和AOF;
2.RDB采用二进制存储,速度快,但数据可能会丢失;
3.AOF命令追加,可读性强,数据准确,但文件较大,效率低;
4.结合redis.conf深入理解两种持久化方案;

持久化方案

RDB/AOF

在这里插入图片描述
在这里插入图片描述

RDB

以二进方式存储

存储信息到redis(内存),Fork 进程 存储内存中的信息,何时触发存储的过程。

在这里插入图片描述

执行操作

在这里插入图片描述

COW( copy-on-write)

在这里插入图片描述

AOF

使用文本方式存储写内容

在这里插入图片描述

RDB二进制的方式存储,AOF使用文本方式

在这里插入图片描述

默认情况:都启动

在这里插入图片描述

如果文件足够大?达到什么程度,如何处理? (rewrite)

在这里插入图片描述

在这里插入图片描述

Redis的持久化方案

redis4.0开始,配置上有些调整。

之前默认不打开AOF。

RDB

Redis Data base: 内存快照

正常关闭,redis服务会存储最后一次修改

非正常关闭,redis会丢失未存储的数据。

开一个(fork)进程,后台执行存储。

在这里插入图片描述

在这里插入图片描述

docker run -it \
--name redis_6399 \
--privileged \
-p 6399:6379 \
--network pet_docker_net \
--ip 172.18.12.99 \
-v /etc/localtime:/etc/localtime \
-v /usr/local/software/redis/6399/conf/redis.conf:/usr/local/etc/redis/redis.conf \
-v /usr/local/software/redis/6399/data/:/data \
-v /usr/local/software/redis/6399/log/redis.log:/var/log/redis.log \
-d redis \
/usr/local/etc/redis/redis.conf

如果采用docker stop关闭

参数设置,30s内,写5次会触发

在这里插入图片描述

进入redis-cli,进行set操作,卡点30s

在这里插入图片描述

关闭6399

在这里插入图片描述

重新启动,发现数据都在

在这里插入图片描述

原因分析

在这里插入图片描述

如果采用强制关闭

在这里插入图片描述

[root@localhost ~]# ps au | grep redis-server
polkitd   14172  0.1  0.2  52812  9832 pts/7    Ssl+ 20:47   0:00 redis-server 0.0.0.0:6379
root      38838  0.0  0.0 112824   976 pts/15   S+   20:54   0:00 grep --color=auto redis-server
[root@localhost ~]# kill -9 14172
[root@localhost ~]# 

出现数据丢失,以及原因分析

在这里插入图片描述

日志查看

在这里插入图片描述

AOF

日志方式存储非读命令.

参数设置

打开AOF

在这里插入图片描述

关于AOF的备份频率

在这里插入图片描述

参数解释

在这里插入图片描述

关于AOF的重写rewrite

在这里插入图片描述

达到64Mb的时候会rewrite,重写一下

在这里插入图片描述

混编方式的加载

数据加载顺序(混合方式)

  1. 读取aof
  2. 混编方式: 在aof文件里面,既有aof,也有rdb;rdb在尾部,先被读出来;aof+rdb
1:M 09 Aug 2023 10:39:36.429 * Reading RDB preamble from AOF file...
1:M 09 Aug 2023 10:39:36.429 * Loading RDB produced by version 6.2.6
1:M 09 Aug 2023 10:39:36.429 * RDB age 6668 seconds
1:M 09 Aug 2023 10:39:36.429 * RDB memory usage when created 1.89 Mb
1:M 09 Aug 2023 10:39:36.429 * RDB has an AOF tail
1:M 09 Aug 2023 10:39:36.429 # Done loading RDB, keys loaded: 3, keys expired: 0.
1:M 09 Aug 2023 10:39:36.429 * Reading the remaining AOF tail...
1:M 09 Aug 2023 10:39:36.429 * DB loaded from append only file: 0.001 seconds
1:M 09 Aug 2023 10:39:36.429 * Ready to accept connections

在这里插入图片描述

appendonly yes

在这里插入图片描述

混编打开后,将AOF重写后文件大小变小

在这里插入图片描述

让aof进行重写

原本重写设置

在这里插入图片描述

后台命令让redis重写

在这里插入图片描述

查看日志

在这里插入图片描述

查看混编后的文件

在这里插入图片描述

两种持久化方案的优缺点

AOF优缺点

优点:数据准确缺点:慢,文件大,效率低
默认是每秒fsync一次。这样最多丢失1秒数据在相同的数据集下,AOF文件的大小一般会比RDB文件大。
AOF日志文件是一个纯追加的文件。就算服务器突然Crash,也不会出现日志的定位或者损坏问题在某些fsync策略下,AOF的速度会比RDB慢。通常fsync设置为每秒一次就能获得比较高的性能,而在禁止fsync的情况下速度可以达到RDB的水平。
当AOF文件太大时,Redis会自动在后台进行重写。重写很安全,因为重写是在一个新的文件上进行,同时Redis会继续往旧的文件追加数据。
AOF把操作命令以简单易懂的格式一条接一条的保存在文件里,很容易导出来用于恢复数据。

RDB优势和劣势

优势:快劣势:数据可能有缺失
一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的。比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。
对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。
性能最大化。对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO操作了。
相比于AOF机制,如果数据集很大,RDB的启动效率会更高。

总结

1.Redis数据持久化的两种方式,RDB和AOF;
2.RDB采用二进制存储,速度快,但数据可能会丢失;
3.AOF命令追加,可读性强,数据准确,但文件较大,效率低;
4.结合redis.conf深入理解两种持久化方案;

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

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

相关文章

QT报表Limereport v1.5.35编译及使用

1、编译说明 下载后QT CREATER中打开limereport.pro然后直接编译就可以了。编译后结果如下图: 一次编译可以得到库文件和DEMO执行程序。 2、使用说明 拷贝如下图编译后的lib目录到自己的工程目录中。 release版本的重新命名为librelease. PRO文件中配置 QT …

抖音小程序实现less语言编译样式

1.在抖音开发工具中搜索扩展less 2. 然后点击小齿轮选择扩展设置 3. 然后在扩展设置中选择在settings.json中编辑# 4. 在settings.json中加入以下这段代码即可 // Easy LESS配置"less.compile": {"compress": false,//是否压缩"sourceMap": fal…

virtualBox桥接模式下openEuler镜像修改IP地址、openEule修改IP地址、openEule设置IP地址

安装好openEuler后,设置远程登入前,必不可少的一步,主机与虚拟机之间的通信要解决,下面给出详细步骤: 第一步:检查虚拟机适配器模式:桥接模式 第二步:登入虚拟机修改IP cd /etc/sysconfig/network-scripts vim ifcfg-enpgs3 没有vim的安装或者用vi代替:sudo dnf …

优化开发体验:掌握VSCode配置Vue模板的技巧与方法

前言 当你使用了 VSCode 配置 vue 模版时,你会发现它就像是一位贴心的助手,本文将为大家介绍如何使用 VSCode 配置 vue 模板,让你的代码更加高效、美观。下面让我们一起来看看吧。 一、打开 VSCode 控制台 文件 --> 首选项 --> 用户片段…

HOT92-最小路径和

leetcode原题链接:最小路径和 题目描述 给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。 说明:每次只能向下或者向右移动一步。 示例 1: 输入:…

运维工程师常见面试题

1、http常见返回码 2、mysql的同步方式 1)异步复制 MySQL默认的复制即是异步的,主库在执行完客户端提交的事务后会立即将结果返给给客户端,并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了&a…

c++11 标准模板(STL)(std::basic_stringbuf)(二)

定义于头文件 <sstream> template< class CharT, class Traits std::char_traits<CharT>, class Allocator std::allocator<CharT> > class basic_stringbuf : public std::basic_streambuf<CharT, Traits> std::basic_stringbuf…

拒绝摆烂!C语言练习打卡第一天

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;每日一练 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ &#x1f5d2;️前言&#xff1a; 在前面我们学习完C语言的所以知识&#xff0c;当…

PostgreSql 备份恢复

一、概述 数据库备份一般可分为物理备份和逻辑备份&#xff0c;其中物理备份又可分为物理冷备和物理热备&#xff0c;下面就各种备份方式进行详细说明&#xff08;一般情况下&#xff0c;生产环境采取的定时物理热备逻辑备份的方式&#xff0c;均是以下述方式为基础进一步研发编…

pytorch单机多卡后台运行

nohup sh ./train_chat.sh > train_chat20230814.log 2>1&参考资料 Pytorch单机多卡后台运行的解决办法

学C的第三十三天【C语言文件操作】

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 学C的第三十二天【动态内存管理】_高高的胖子的博客-CSDN博客 1 . 为什么要使用文件 以前面写的通讯录为例&#xff0c;当通讯录运行起来的时候&#xff0c;可以给通讯录中增加、删…

DolphinDB 入选 Gartner《中国数据库市场指南》代表厂商

近日&#xff0c;国际知名研究机构 Gartner 发布2023年《中国 DBMS 市场指南&#xff08;Market Guide for DBMS, China&#xff09;》研究报告&#xff0c;在中国范围内评估并重点推荐了36家极具实力的企业&#xff0c;DolphinDB 以领先的技术和商业能力顺势入榜。 DolphinDB …

Python批量给excel文件加密

有时候我们需要定期给公司外部发邮件&#xff0c;在自动化发邮件的时候需要对文件进行加密传输。本文和你一起来探索用python给单个文件和批量文件加密。    python自动化发邮件可参考【干货】用Python每天定时发送监控邮件。 文章目录 一、安装pypiwin32包二、定义给excel加…

Vue.js 生命周期详解

Vue.js 是一款流行的 JavaScript 框架&#xff0c;它采用了组件化的开发方式&#xff0c;使得前端开发更加简单和高效。在 Vue.js 的开发过程中&#xff0c;了解和理解 Vue 的生命周期非常重要。本文将详细介绍 Vue 生命周期的四个阶段&#xff1a;创建、挂载、更新和销毁。 …

“中国软件杯”飞桨赛道晋级决赛现场名单公布

“中国软件杯”大学生软件设计大赛是由国家工业和信息化部、教育部、江苏省人民政府共同主办&#xff0c;是全国软件行业规格最高、最具影响力的国家级一类赛事&#xff0c;为《全国普通高校竞赛排行榜》榜单内赛事。今年&#xff0c;组委会联合百度飞桨共同设立了“智能系统设…

Profibus-DP转modbus RTU网关modbus rtu和tcp的区别

捷米JM-DPM-RTU网关在Profibus总线侧实现主站功能&#xff0c;在Modbus串口侧实现从站功能。可将ProfibusDP协议的设备&#xff08;如&#xff1a;EH流量计、倍福编码器等&#xff09;接入到Modbus网络中&#xff1b;通过增加DP/PA耦合器&#xff0c;也可将Profibus PA从站接入…

探究使用HTTP代理ip后无法访问网站的原因与解决方案

目录 访问网站的原理是什么 1. DNS解析 2. 建立TCP连接 3. 发送HTTP请求&#xff1a; 4. 服务器响应&#xff1a; 5. 浏览器渲染&#xff1a; 6. 页面展示&#xff1a; 使用代理IP后访问不了网站&#xff0c;有哪些方面的原因 1. 代理IP的可用性&#xff1a; 2. 代理…

VVIC-商品详情

一、接口参数说明&#xff1a; item_get-根据ID取商品详情&#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/vvic/item_get 名称类型必须描述keyString是调用key&#xff08;点击获取测试k…

【编码魔法师系列_六大原则5】迪米特原则(Law of Demeter Principle)

学会设计模式&#xff0c;你就可以像拥有魔法一样&#xff0c;在开发过程中解决一些复杂的问题。设计模式是由经验丰富的开发者们&#xff08;GoF&#xff09;凝聚出来的最佳实践&#xff0c;可以提高代码的可读性、可维护性和可重用性&#xff0c;从而让我们的开发效率更高。通…

Es、kibana安装教程-ES(二)

上篇文章介绍了ES负责数据存储&#xff0c;计算和搜索&#xff0c;他与传统数据库不同&#xff0c;是基于倒排索引来解决问题的。Kibana是es可视化工具。 分布式搜索ElasticSearch-ES&#xff08;一&#xff09; 一、ElasticSearch安装 官网下载地址&#xff1a;https://www…