Redis-redis.conf配置文件中的RDB与AOF持久化方式的详解与区别

  1. RDB(Redis Database)
    RDB是Redis的默认持久化方式,它将内存中的数据以二进制格式写入磁盘,形成一个快照
    。RDB持久化有以下几个重要的配置选项:
  • save:指定了保存RDB的策略,默认的配置是每900秒(15分钟)至少有一个键发生变化时保存一次RDB文件。
  • save 900 1:表示在900秒内至少发生1个变化时进行保存。
  • save 300 10:表示在300秒内至少发生10个变化时进行保存。
  • save 60 10000:表示在60秒内至少发生10000个变化时进行保存。
  • dbfilename:指定保存RDB文件的文件名,默认是dump.rdb
  • dir:指定RDB文件保存的目录,默认是Redis服务器所在的目录。
  1. AOF(Append Only File)
    AOF是Redis的另一种持久化方式,它以日志的形式记录每个写操作的命令,通过重新执行这些命令来恢复数据
    。AOF持久化有以下几个重要的配置选项:
  • appendonly:指定是否启用AOF,默认值为no。如果要启用AOF持久化,需要将该选项设置为yes
  • appendfilename:指定保存AOF文件的文件名,默认是appendonly.aof
  • appendfsync:指定AOF文件的同步策略,有以下三个选项:
    • always:每个写操作都立即同步到磁盘。这样能确保数据的完整性,但写入性能较低。
    • everysec:每秒同步一次,Redis默认的配置。在发生故障时可能会丢失1秒的数据。
    • no:完全依赖操作系统来同步,写入性能较高,但可能会丢失多秒的数据。
  • auto-aof-rewrite-percentage:设置AOF文件重写的触发百分比,默认为100。当AOF文件的大小超过了上一次重写时的大小的指定百分比时,Redis会自动触发AOF文件的重写。
  • auto-aof-rewrite-min-size:设置AOF文件重写的最小大小,默认为64MB。当AOF文件的大小超过了这个值时,Redis会自动触发AOF文件的重写。

区别:

  • RDB是以二进制格式持久化整个数据库,而AOF是记录每个写操作的日志
  • RDB文件的恢复速度相对较快,但可能会丢失最后一次持久化后的数据AOF文件的恢复速度相对较慢,但能保证数据的完整性
  • RDB文件的大小一般较小,适用于备份和恢复整个数据库AOF文件的大小一般较大,适用于持久化每个写操作
  • AOF方式更加耗费硬盘空间和IO而RDB方式更加适用于节约空间和提高性能的场景
  • 默认配置下,Redis同时使用RDB和AOF但在恢复的时候会优先使用AOF来进行数据重建

持久化—RDB(Redis Database)

在这里插入图片描述

RDB:Redis Databases

1.什么是RDB

在指定时间间隔后,将内存中的数据集快照写入数据库 ;在恢复时候,直接读取快照文件,进行数据的恢复 ;

在这里插入图片描述

2.工作原理

进行 RDB 的时候,redis 的主线程是不会做 io 操作的主线程会 fork 一个子线程来完成该操作

1.Redis 调用forks。同时拥有父进程和子进程。
2.子进程将数据集写入到一个临时 RDB 文件中。
3.当子进程完成对新 RDB 文件的写入时,Redis 用新 RDB 文件替换原来的 RDB 文件,并删除旧的 RDB 文件。
这种工作方式使得 Redis 可以从写时复制(copy-on-write)机制中获益(因为是使用子进程进行写操作,而父进程依然可以接收来自客户端的请求。)

在这里插入图片描述

①修改配置文件中,有关生成写入rdb文件的说明

在这里插入图片描述

②测试1:先删除rdb文件,再出发rdb文件的创建机制

在这里插入图片描述

保存一下配置文件的修改

在这里插入图片描述

save可以使内存中的数据,立刻持久化,并阻塞其他进程

在这里插入图片描述
重新生成rdb文件

在这里插入图片描述

在这里插入图片描述

③测试2:重启redis,内存中的数据,还在rdb中

在这里插入图片描述

在这里插入图片描述

④测试3:删除rdb文件,flushall后,自动生成rdb文件

在这里插入图片描述

在这里插入图片描述

3.触发机制

  1. save的规则满足的情况下,会自动触发rdb原则
  2. 执行flushall命令,也会触发我们的rdb原则
  3. 退出redis,也会自动产生rdb文件

在这里插入图片描述

在这里插入图片描述

4.save

使用 save 命令,会立刻对当前内存中的数据进行持久化 ,但是会阻塞,也就是不接受其他操作了

由于 save 命令是同步命令,会占用Redis的主进程。若Redis数据非常多时,save命令执行速度会非常慢,阻塞所有客户端的请求。

在这里插入图片描述

5.flushall命令

flushall 命令也会触发持久化

6.触发持久化规则

满足配置条件中的触发条件 ;

可以通过配置文件对 Redis 进行设置, 让它在“ N 秒内数据集至少有 M 个改动”这一条件被满足时, 自动进行数据集保存操作。

在这里插入图片描述

在这里插入图片描述

7.bgsave

bgsave异步进行进行持久化的时候redis 还可以将继续响应客户端请求

在这里插入图片描述

bgsave和save对比

命令savebgsave
IO类型同步异步
阻塞?是(阻塞发生在fock(),通常非常快)
复杂度O(n)O(n)
优点不会消耗额外的内存不阻塞客户端命令
缺点阻塞客户端命令需要fock子进程,消耗内存

持久化AOF(Append Only File)

在这里插入图片描述

在这里插入图片描述

AOF几乎不使用,但是得理解原理

在这里插入图片描述

1.重启redis,自动生成aof文件

在这里插入图片描述

2.redis-check-aof

redis-check-aof:恢复原来的aof文件,但是会删除错误数据

在这里插入图片描述

破坏aof文件后,连接报错

在这里插入图片描述

修复aof文件:redis-check-aof --fix appendonly.aof

在这里插入图片描述

在这里插入图片描述

正常进入redis

在这里插入图片描述

在这里插入图片描述

3.优缺点

在这里插入图片描述

4.重写规则

在这里插入图片描述

在这里插入图片描述

5.扩展

在这里插入图片描述

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

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

相关文章

【软件测试】学习笔记-后端性能测试工具原理与行业常用工具简介

不管是什么类型的性能测试方法,都需要去模拟大量并发用户的同时执行,所以性能测试基本都是靠工具实现。没有工具,性能测试将寸步难行。 这篇文章从后端性能测试的工具讲起,讨论它们的实现原理,以及如何用于后端的性能…

SpringCloud:Gateway服务网关

文章目录 Gateway服务网关快速入门断言工厂默认过滤器自定义过滤器过滤器执行顺序跨域问题处理 Gateway服务网关 网关(Gateway)是将两个使用不同协议的网络段连接在一起的设备。 网关的作用就是对两个网络段中的使用不同传输协议的数据进行互相的翻译转换…

案例123:基于微信小程序的在线订餐系统的设计与实现

文末获取源码 开发语言:Java 框架:springboot JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder …

CSS 雷达监测效果

<template><view class="center"><view class="loader"><view></view></view></view></template><script></script><style>/* 设置整个页面的背景颜色为深灰色 */body {background-col…

leetcode - 934. Shortest Bridge

Description You are given an n x n binary matrix grid where 1 represents land and 0 represents water. An island is a 4-directionally connected group of 1’s not connected to any other 1’s. There are exactly two islands in grid. You may change 0’s to 1…

【记录】重装系统后的软件安装

考完研重装了系统&#xff0c;安装软件乱七八糟&#xff0c;用到什么装什么。在这里记录一套标准操作&#xff0c;备用。一个个装还是很麻烦&#xff0c;我为什么不直接写个脚本直接下载安装包呢&#xff1f;奥&#xff0c;原来是我太菜了还不会写脚本啊&#xff01;先记着吧&a…

业务题day02

2-1 说一下生成课表的业务流程 当点击马上学习或者报名的时候&#xff0c;先去数据库查询课程是否存在或者是否在有效期内&#xff0c;如果判断通过&#xff0c;就成功。 接下来就要保存对应的课表&#xff0c;在上述操作中涉及两个微服务&#xff0c;下单过程trade微服务调用…

Zookeeper使用详解

介绍 ZooKeeper是一个分布式的&#xff0c;开放源码的分布式应用程序协调服务&#xff0c;是Google的Chubby一个开源的实现&#xff0c;是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件&#xff0c;提供的功能包括&#xff1a;配置维护、域名服务、分布…

C语言之冒泡排序(数组)

//数组--冒泡排序 //1.经典错误版 #include<stdio.h> void bubble_sort(int arr[]) { //确定冒泡函数的趟数(10个元素&#xff0c;9趟冒泡排序) int i 0; int sz sizeof(arr) / sizeof(arr[0]);//10 算出了1 这里错了 传参错了 for (i 0; i < sz…

1127: 矩阵乘积

题目描述 计算两个矩阵A和B的乘积。 输入 第一行三个正整数m、p和n&#xff0c;0<m,n,p<10&#xff0c;表示矩阵A是m行p列&#xff0c;矩阵B是p行n列&#xff1b; 接下来的m行是矩阵A的内容&#xff0c;每行p个整数&#xff0c;用空格隔开&#xff1b; 最后的p行是矩…

【零基础入门TypeScript】字符串

目录 句法 字符串方法 String 对象允许您处理一系列字符。它使用许多辅助方法包装字符串原始数据类型。 句法 var var_name new String(string); 下面给出了 String 对象中可用方法的列表及其描述&#xff1a; 编号属性及描述1.构造函数 返回对创建该对象的 String 函数的…

MFC多线程编程示例1

新建一个对话框工程; 添加2个编辑框,2个按钮; 对话框头文件添加, public:CWinThread *m_pthread1;CWinThread *m_pthread2;static UINT hellothread(LPVOID lparam);static UINT testthread(LPVOID lparam);CCriticalSection g_criticalsection;BOOL flag;int i1, i2; …

BC28 大小写转换

描述 实现字母的大小写转换。多组输入输出。 输入描述&#xff1a; 多组输入&#xff0c;每一行输入大写字母。 输出描述&#xff1a; 针对每组输入输出对应的小写字母。 示例1 输入&#xff1a; A B复制输出&#xff1a; a b 复制 备注&#xff1a; 多组输入过程中…

第九部分 使用函数 (四)

目录 一、foreach 函数 二、if 函数 三、call 函数 一、foreach 函数 foreach 函数和别的函数非常的不一样。因为这个函数是用来做循环用的&#xff0c;Makefile 中的 foreach 函数几乎是仿照于 Unix 标准 Shell&#xff08;/bin/sh&#xff09;中的 for 语句&#xff0c;或…

SpringFramework实战指南(一)

SpringFramework实战指南&#xff08;一&#xff09; 一、技术体系结构1.1 总体技术体系1.2 框架概念和理解 一、技术体系结构 1.1 总体技术体系 单一架构 一个项目&#xff0c;一个工程&#xff0c;导出为一个war包&#xff0c;在一个Tomcat上运行。也叫all in one。 单一架…

AUTOSAR从入门到精通-Autosar 中断机制(七)

目录 原理 任务与中断 任务 栈管理 激活任务 中断 copy数据及中断处理

springboot(ssm摄影分享网站系统 摄影论坛系统Java系统

springboot(ssm摄影分享网站系统 摄影论坛系统Java系统 开发语言&#xff1a;Java 框架&#xff1a;ssm/springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xff09; 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 5.7&#xff08;或8.0&#xff09; 数…

Kubernetes (十二) 存储——Volumes配置管理

一. 卷的概念 官方地址&#xff1a;卷 | Kuberneteshttps://v1-24.docs.kubernetes.io/zh-cn/docs/concepts/storage/volumes/ 二. 卷的类型及使用 …

前端性能优化之数据存取,存储以及缓存技术

无论是哪种计算机语言&#xff0c;说到底它们都是对数据的存取与处理。若能在处理数据前&#xff0c;更快地读取数据&#xff0c;那么必然会对程序执行性能产生积极的作用。 一般而言&#xff0c;js的数据存取有4种方式。 直接字面量:字面量不存储在特定位置也不需要索引&…

spring基于XML方式的组件管理

基本介绍 依赖注入是一种处理对象间依赖关系的技术。在Spring中&#xff0c;依赖注入有构造方法注入和设值注入两种方式。 设值注入是将依赖作为成员变量&#xff0c;通过主调类的setter方法注入依赖。构造方法注入则是在Bean的构造方法中注入依赖。 本次我们将通过具体例子来…