大厂面试之【Redis持久化机制】 - RDB和AOF概述及应用配置

news2025/3/11 9:09:31

文章目录

  • Redis持久化
    • 1. RDB(Redis DataBase)
      • 1.1 概述
      • 1.2 配置应用
    • 2. AOF(Append Only File)
      • 2.1 概述
      • 2.2 配置应用

Redis持久化


先上结论:Redis持久化操作分为rdb以及aof,但是前者已经够用


1. RDB(Redis DataBase)


1.1 概述


  1. rdb保存的是dump.rdb文件
  2. 在指定的时间间隔内将内存中的数据集快照写入磁盘,类似于Snapshot快照
  3. 恢复时是将快照文件直接读到内存里
  4. redis.conf的快照配置中设置了save保存机制之后,可以设置持久化,一般来说conf配置文件不需要进行修改

其原理在主进程的运行过程中,创建一个子进程。子进程会先将所有的数据写入到一个临时文件中,等持久化结束,再用这个临时文件替换上次持久化的文件。在整个过程中,主进程是不进行任何的读写操作,确保了性能。

1.2 配置应用


编辑配置文件redis.conf,找到SNAPSHOTTING关键字,写入我们自己的值

在这里插入图片描述

其上的修改字段表示多少秒内,有多少个key进行了修改,会触发保存机制

# 900秒内,有1个key进行了修改,将触发保存机制
save 900 1

设置持久化文件的名称以及设置持久化文件的路径位置。这里千万要注意,得赋予这个对应的文件夹写入权限,例如chomod -R 777 /usr/local/bin/myRedisDump

在这里插入图片描述

此后,我们每次触发一次保存机制,相应的文件就会存储在该文件夹下

在这里插入图片描述

触发机制

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

如何恢复rdb文件

首先查看我们存在的目录位置

config get dir

在这里插入图片描述

rdb文件放在所示目录下即可,redis启动会自动监测该数据文件并且恢复

优缺点

优点:

  1. 适合大规模的数据恢复
  2. 对数据的完整性要不高

缺点:

  1. 需要一定的时间间隔进程操作,如果意外宕机了,这个最后一次修改数据就没有的了
  2. 开启子进程的时候,会占用一定的内容空间

2. AOF(Append Only File)


2.1 概述


  1. aof保存的是appendonly.aof文件
  2. 将所有命令记录下来,恢复的时候直接全部重新执行,默认关闭该模式
  3. 以日志的形式来记录每个写操作,将Redis执行过的所有指令记录下来(读操作不记录),只许追加文件,但不可以改写文件,redis启动之初会读取该文件重新构建数据
  4. redis重启就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作

2.2 配置应用


编辑配置文件redis.conf,找到APPEND ONLY MODE关键字,将其改为yes即可

在这里插入图片描述

修复

如果生成的aof配置文件有错,redis无法正常启动,可以利用自带的修复软件

在这里插入图片描述

redis-check-aof --fix appendonly.aof

优缺点

优点:

  1. 每一次修改都同步,文件的完整性更好
  2. 从不同步,效率最高

缺点

  1. 相对文件数据来说,修复速度较慢
  2. 运行效率较慢,远远不如rdb

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

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

相关文章

基于springboot实现校园资料分享平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现校园资料分享平台演示 摘要 随着信息互联网购物的飞速发展,国内放开了自媒体的政策,一般企业都开始开发属于自己内容分发平台的网站。本文介绍了校园资料分享平台的开发全过程。通过分析企业对于校园资料分享平台的需求,创…

C++ 11是如何封装Thread库的?

引言 C11 标准引入了一个重要的特性,即原生线程支持,这标志着C语言在并发编程领域迈出了坚实的步伐。在此之前,开发人员在进行跨平台的多线程编程时,不得不依赖于操作系统提供的特定API,如Windows API或POSIX Threads…

开发环境->生产环境

1、数据迁移 不涉及docker # 以数据库用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u abragent -pabragebb17 abragent > abragent.sql# 以root用户导出数据 mysqldump -h 192.168.1.168 -P 3307 -u root -p8d3Ba1b abragent > abragent.sql 涉及docker …

Android12 简单的共享内存驱动实现 参考Ashmem

Android12 共享内存驱动实现 SOC:RK3568 system:Android12 概述: 1. 概述 Ashmem(Anonymous Shared Memory,Android 匿名共享内存),它基于 mmap 系统调用,可以让不同进程将同一段…

数据恢复工具哪个成功率高?十大数据恢复软件榜单

数据恢复软件可以恢复损坏或删除的数据。使用数据恢复软件恢复存储在安全位置的剩余信息。您可能会因意外删除文件、文件系统逻辑损坏甚至存储故障等各种原因而丢失数据。执行查看、复制、扫描、识别或提取存储设备中已删除扇区的数据等操作。恢复虚拟存储在任何设备&#xff0…

【算法练习】27:冒泡排序学习笔记

一、冒泡排序的算法思想 原理:以升序为例,冒泡排序通过从左往右连续比较相邻元素,当发现左边比右边大就交换元素。从左往右依次比较完称为“一轮”,每轮结束之后就会固定一个元素。 时间复杂度:2层循环,所以…

windows安装Openssl

openssl官网:[ Downloads ] - /source/index.html Windows 安装方法 OpenSSL 官网没有提供 Windows 版本的安装包,可以选择其他开源平台提供的工具 Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 等待下载完成 捐不起 配置环境变量 ope…

Maven依赖管理项目构建工具

一 Maven简介 1.1、Maven是一个依赖管理工具 1.1.1 jar 包的规模 随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包也越来越多。项目中,一个模块里面用到上百个jar包是非常正常的。 比如下面的例子,我…

内存管理机制SLAB

1. 为什么需要内存分配管理?为什么需要SLAB? 在学习c语言时,我们常常会使用到malloc()去申请一块内存空间,用于存放我们的数据,这是代码层面的语言 如果我们想要关心malloc这个命令向系统发出后,系统会做什…

HTMLCSSJS

HTML基本结构 <html><head><title>标题</title></head><body>页面内容</body> </html> html是一棵DOM树, html是根标签, head和body是兄弟标签, body包括内容相关, head包含对内容的编写相关, title 与标题有关.类似html这种…

cdp集群扩容节点磁盘挂载失败原因和解决办法

问题说明 之前在对cdp集群扩容节点环境配置时 按照文档挂载磁盘 在最后一步挂载时&#xff0c;发现有块磁盘没挂载上去 可以看到本该挂载到/data5目录的磁盘sdf1被挂到了/data1上面 查看挂载点文件 vim /etc/fstab问题分析&#xff1a; 发现之前在设置挂载点的时候挂载目录…

gpt4.0中文版

我愿把这个网站成为全球最强AI网站&#xff01;弄100多个AI伺候你&#xff1f;&#xff1f; 家人们&#xff0c;你们猜我发现了什么牛逼的AI网站&#xff1f;&#xff1f; 直接上图&#xff1a; 编辑 这个网站&#xff0c;聚合了国内外100多个顶尖的AI&#xff0c;包括了Op…

AI技术在金融领域/银行业的应用和风险

前言 随着科技的不断发展&#xff0c;人工智能&#xff08;AI&#xff09;技术已经在各行各业得到了广泛的应用&#xff0c;其中包括银行业。银行业作为经济的重要组成部分&#xff0c;一直在不断地探索和应用新技术&#xff0c;以提升服务效率、风险管理和客户体验。然而&…

解决nvm切换node版本失败的终极办法,亲测有效!

问题 当我们有多个前端项目&#xff0c;但是使用的node版本不相同&#xff0c;这就需要我们在启动不同项目时切换node版本&#xff0c;很麻烦&#xff0c;这时有一个叫nvm的好东西可以帮我们快速切换node版本。 但是&#xff0c;nvm安装有一个巨大的坑点&#xff1a;nvm use …

二、GitLab相关操作

GitLab相关操作 一、组、用户、项目管理1.创建组2.创建项目3.创建用户并分配组3.1 创建用户3.2 设置密码3.3 给用户分配组 二、拉取/推送代码1.配置ssh(第一次需要)1.1 创建一个空文件夹1.2 配置本地仓账号和邮箱1.3 生成ssh公钥密钥1.4 gitlab配置公钥 2.拉取代码3.推送代码3.…

Linux gcc day3

find命令&#xff08;importance&#xff09;&#xff1a; 语法&#xff1a;find pathname -options find /root -name test.c which命令&#xff1a; which [指令] 只搜索指令&#xff0c;在什么位置下 为什么文件夹带有颜色呢&#xff1f; 科普补充alias命令&#xff1a; ali…

理论实践-CPU性能监控工具-uptime-mpstat-pidstat-vmstat-top-ps-perf

CPU 性能工具。 首先&#xff0c;平均负载的案例。我们先用 uptime&#xff0c; 查看了系统的平均负载&#xff1b;而在平均负载升高后&#xff0c;又用 mpstat 和 pidstat &#xff0c;分别观察了每个 CPU 和每个进程 CPU 的使用情况&#xff0c;进而找出了导致平均负载升高的…

刷题之Leetcode35题(超级详细)

35.搜索插入位置 力扣题目链接(opens new window)https://leetcode.cn/problems/search-insert-position/ 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 你可…

【Java八股学习】Redis持久化 思维导图

说明 文章内容通过学习小林Coding内的优质文章后整理而来&#xff0c;整理成思维导图的方式是为了帮助自己理解、记忆和复习。如若侵权请联系删除&#xff0c;再次对小林Coding内的优质文章表示感谢。参考文章如下&#xff1a; AOF 持久化是怎么实现的&#xff1f;RDB 快照是…

【.NET全栈】ZedGraph图表库的介绍和应用

文章目录 一、ZedGraph介绍ZedGraph的特点ZedGraph的缺点使用注意事项 二、ZedGraph官网三、ZedGraph的应用四、ZedGraph的高端应用五、、总结 一、ZedGraph介绍 ZedGraph 是一个用于绘制图表和图形的开源.NET图表库。它提供了丰富的功能和灵活性&#xff0c;可以用于创建各种…