当前位置: 首页 > news >正文

Redis持久化机制——针对实习面试

目录

  • Redis持久化机制
    • Redis为什么要有持久化机制?
    • Redis持久化方式有哪些?
    • AOF持久化工作原理是什么?有什么优缺点?
      • AOF持久化工作原理
      • AOF的优点
      • AOF的缺点
    • RDB持久化工作原理是什么?有什么优缺点?
      • RDB持久化工作原理
      • RDB的优点
      • RDB的缺点
    • 如何选择AOF或RDB?
    • Redis4.0对于持久化机制做了什么优化?

Redis持久化机制

在这里插入图片描述

Redis为什么要有持久化机制?

Redis是一个基于内存的高性能键值对数据库,其主要优势在于快速的读写速度。然而,内存是一种易失性存储介质,一旦服务器断电或发生故障,内存中的数据就会丢失。为了解决这个问题,Redis提供了持久化机制,主要有以下几个原因:

  1. 数据保护:持久化确保Redis在发生故障时不会丢失数据。即使服务器崩溃,重启后也能从持久化文件中恢复数据。

  2. 灾难恢复:在系统发生严重故障时,持久化数据可以用于恢复到故障前的状态,减少数据丢失的风险。

  3. 数据备份:持久化文件可以作为数据备份,用于数据迁移、灾难恢复或在不同的Redis实例间同步数据。

  4. 业务需求:某些业务场景要求数据必须持久化存储,以保证数据的长期可用性和一致性。

  5. 审计和合规性:某些行业法规可能要求保留数据记录,持久化机制可以帮助满足这些合规性要求。

  6. 分析和报告:持久化的数据可以用于历史数据分析和报告,这对于业务决策和性能监控非常重要。

  7. 减少数据不一致:在分布式系统中,持久化可以帮助减少数据不一致的问题,确保数据在多个节点间同步。

  8. 提高系统的可用性和可靠性:通过持久化,系统可以在发生故障后快速恢复,提高系统的可用性和可靠性。

Redis持久化方式有哪些?

Redis支持两种持久化方式:
RDB(快照持久化)
AOF(追加文件持久化)

AOF持久化工作原理是什么?有什么优缺点?

AOF持久化工作原理

AOF(Append Only File)持久化是Redis的一种数据持久化方式,其核心思想是记录每次对数据库进行修改的所有写操作命令,并追加到AOF文件中。当Redis服务器重新启动时,通过重新执行AOF文件中的命令来恢复数据。具体来说,AOF持久化的工作原理包括以下几个步骤:

  1. 命令追加:Redis执行的每个写操作命令(如SET、DEL等)都会被追加到AOF缓冲区中。
  2. 文件写入:AOF缓冲区中的内容会根据配置的同步策略,周期性地写入到AOF文件中。
  3. 文件同步:根据配置的同步策略,将AOF文件缓冲区的内容同步到磁盘,确保数据的持久化。

AOF的优点

  1. 数据安全性高:AOF持久化可以提供不同的同步策略,包括每秒同步、每修改同步和不同步,以适应不同的数据安全性需求。在默认的每秒同步策略下,最多只会丢失一秒钟的数据。
  2. 数据恢复能力强:AOF文件是一个只进行追加操作的日志文件,即使部分数据未写入完成,也不会破坏已存在的内容,且可以通过工具修复数据一致性问题。
  3. 可读性和可操作性强:AOF文件以文本方式记录,易于理解和操作,适合做灾难性的误删除紧急恢复。

AOF的缺点

  1. 文件体积大:与RDB相比,AOF文件通常更大,因为它记录了所有的写操作命令,而RDB文件只记录数据的快照
  2. 性能开销:AOF持久化需要对每个写命令进行同步操作,可能会对Redis的性能产生一定影响,尤其是在always同步策略下。
  3. 数据恢复速度慢:由于AOF文件可能非常大,从AOF文件中恢复数据的过程可能会比较慢。

RDB持久化工作原理是什么?有什么优缺点?

RDB持久化工作原理

RDB持久化是指在指定的时间间隔内将Redis内存中的数据集快照写入磁盘,实现原理是Redis服务在指定的时间间隔内先fork一个子进程,由子进程将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储,生成dump.rdb文件存放在磁盘中。这个过程主要包括以下几个步骤:

  1. 触发RDB生成:可以通过配置文件中的save指令设置条件自动触发,或者手动执行SAVEBGSAVE命令触发。
  2. Fork子进程:Redis通过fork()系统调用创建一个子进程,这个子进程与父进程共享相同的数据页,但拥有自己的执行线程。
  3. 写入临时文件:子进程将内存中的数据写入到一个临时文件中。
  4. 替换RDB文件:当临时文件写入完成后,原子地替换掉旧的RDB文件。
  5. 清理临时文件:完成替换后,临时文件会被删除。

RDB的优点

  1. 数据备份简单:RDB文件是一个二进制文件,方便备份和恢复
  2. 灾难恢复:RDB文件可以轻松地被压缩后转移到其他存储介质上,适合灾难恢复
  3. 性能最大化:持久化操作由子进程完成,主进程不进行IO操作,避免了对Redis性能的影响。
  4. 启动效率:相比于AOF,RDB在启动时加载数据的速度更快,尤其是数据集较大时。

RDB的缺点

  1. 数据安全性低:RDB是周期性地进行数据快照,如果在两次快照之间Redis发生故障,可能会丢失最后一次快照之后的数据
  2. fork操作的性能开销:当数据集较大时,fork操作可能会非常耗时,并且会暂时占用更多的内存资源
  3. 可能的数据丢失:如果在RDB持久化过程中Redis服务宕机,那么自上次快照以来的所有更改都将丢失。

如何选择AOF或RDB?

在选择AOF或RDB持久化时,可以根据以下几个因素来决定:

  1. 数据安全性

    • 如果业务对数据安全性有较高要求,希望尽可能避免数据丢失,那么应该选择AOF持久化方式。AOF可以配置为每秒持久化或每个命令执行完就持久化,确保数据的安全性。
    • RDB是间隔一段时间进行持久化,如果在这个间隔内发生宕机,数据会丢失,所以对数据安全性要求不高的场景可以考虑使用RDB
  2. 数据恢复速度

    • 如果需要快速恢复数据,或者需要快速恢复大量数据,RDB可能更合适。RDB在恢复大数据集时速度更快,因为它只需要加载一个文件即可恢复整个数据集。
    • AOF的恢复速度可能会慢一些,因为需要逐条执行写操作来恢复数据。
  3. 性能考虑

    • 对于需要高性能的场景,如实时系统,RDB的性能可能更好,因为它避免了频繁的IO操作。
    • AOF的写操作是在主进程中执行的,会对主进程对外提供请求的效率造成影响,可能会降低性能。
  4. 存储空间

    • 如果存储空间有限,需要考虑AOF文件的大小增长问题。AOF文件通常会比RDB文件大,因为它记录了所有的写命令。
    • RDB文件通常较小,因此在备份和存储大规模数据时性能较好。
  5. 备份与迁移

    • 如果需要频繁备份和恢复数据,或者需要快速恢复大量数据,RDB可能更合适。RDB文件是一个紧凑的二进制文件,占用空间小,传输速度快。
    • AOF文件可能会很大,传输速度慢。
  6. 数据可读性

    • 如果要求能够方便地查看和修改数据,推荐AOF。AOF是一个可读的文本文件,记录了所有的写命令,可以用于灾难恢复或者数据分析。
    • RDB是一个二进制文件,不易查看和修改。

综合来看,如果对数据完整性要求高,可以选择AOF;
如果对恢复速度和性能要求高,可以选择RDB。

同时,也可以同时使用AOF和RDB两种持久化方式,以兼顾数据安全性和性能。

Redis4.0对于持久化机制做了什么优化?

Redis 4.0 对于持久化机制的优化主要体现在以下几个方面:

  1. 混合持久化(RDB-AOF)
    Redis 4.0 引入了混合持久化机制,它结合了 RDB 和 AOF 的优点。在这种模式下,AOF 重写时,会先将数据以 RDB 的形式写入 AOF 文件的开头,然后继续以 AOF 的格式记录后续的写操作。这样既可以快速加载数据,又能减少数据丢失的风险

  2. 优化 AOF 重写过程
    在 Redis 4.0 中,AOF 重写的触发条件和处理机制得到了优化。通过配置 auto-aof-rewrite-min-sizeauto-aof-rewrite-percentage 参数,可以更灵活地控制 AOF 重写的触发条件,从而优化性能和存储空间的使用。

  3. Lazy Free 机制
    Redis 4.0 引入了 Lazy Free 机制,用于异步处理删除操作,减少因删除大键或大量键而导致的服务器阻塞。这包括 UNLINK 命令(异步版本的 DEL),以及 FLUSHDB ASYNCFLUSHALL ASYNC 命令,它们允许在后台线程中异步释放内存和删除数据集。

  4. 内存管理命令(MEMORY)
    Redis 4.0 新增了 MEMORY 命令,用于监控和优化内存使用情况。这个命令可以帮助用户更好地理解和管理 Redis 的内存使用,包括内存碎片整理和内存使用统计。

  5. 缓存驱逐策略优化
    Redis 4.0 新增了 Last Frequently Used(LFU)缓存驱逐策略,并对已有的驱逐策略进行了优化,使其更健壮、高效、快速和精确。

  6. SWAPDB 命令
    Redis 4.0 新增了 SWAPDB 命令,允许即时替换同实例下的两个 Redis 数据库,这为数据库管理提供了更大的灵活性。

这些优化使得 Redis 4.0 在持久化方面提供了更好的性能和数据安全性,同时也增强了 Redis 的可管理性和灵活性

相关文章:

Redis持久化机制——针对实习面试

目录 Redis持久化机制Redis为什么要有持久化机制?Redis持久化方式有哪些?AOF持久化工作原理是什么?有什么优缺点?AOF持久化工作原理AOF的优点AOF的缺点 RDB持久化工作原理是什么?有什么优缺点?RDB持久化工作…...

Windows系统服务器怎么设置远程连接?详细步骤

一、什么是Windows远程桌面连接? Windows远程桌面(Remote Desktop)功能使用户能够通过网络连接到另一台Windows计算机,实现远程操作。远程桌面非常适合系统管理员、技术支持人员以及那些需要远程工作的人,它允许用户以图形界面的方式访问远程计算机&…...

【Rust设计模式之建造者模式】

Rust设计模式之建造者模式 什么是建造者模式 什么是建造者模式 即将结构体属性方法与构建解离,使用专门的builder进行建造,说白了就是new和其他的方法分开,集中处理更方便。 直接上代码: #[derive(Debug)] struct children {nam…...

2024中国移动(南京)智算大会暨人工智能产业大会即将盛大启幕

11月9日,2024中国移动(南京)智算大会暨人工智能产业大会将在南京国际博览中心盛大举行。此次盛会将汇聚政界、学界与商界的顶尖力量,共同探讨智能计算与人工智能的未来发展方向,为智能计算与人工智能产业的发展注入新的…...

计算机毕业设计 | SpringBoot咖啡商城 购物采买平台 后台管理软件(附源码)

1,项目背景 1.1 当前的问题和困惑 系统稳定性: 在高并发访问时,商城系统容易出现卡顿、崩溃等问题,影响了用户体验和销售额。支付安全性: 支付环节存在潜在的安全隐患,如何确保支付过程的安全性和用户资金…...

CosyVoice文本转语音:轻松创造个性化音频

CosyVoice文本转语音:轻松创造个性化音频" 要实现一个使用通义语音合成模型CosyVoice将文字转换为音频的图形界面应用,可以使用Python的tkinter库来创建图形用户界面(GUI),并使用requests库来调用CosyVoice的API…...

法语nous sommes

法语短语 “nous sommes” 的词源可以追溯到拉丁语,具体分析如下: 1. “Nous” 的词源: “Nous” 是法语中表示 “我们” 的人称代词,源自拉丁语的 “nos”,它表示 “我们” 的意思。 拉丁语 “nos” 是第一人称复数…...

《化学进展》

《化学进展》主要栏目有:综述,评论,中国化学印记,Mini Accounts等。本刊可供化学及相关学科领域的科研、教学、决策管理人员及研究生阅读。 《化学进展》投稿指南稿件要求   (1)本刊仅接受综述与评论性的…...

CNN和RCNN的关系和区别

RCNN(Region-based Convolutional Neural Network)和 CNN(Convolutional Neural Network)是两种不同的神经网络架构,它们在应用和结构上有所不同。以下是它们之间的主要区别: 1. 基本概念 CNN(…...

Chromium 进程降权和提权模拟示例c++

一、背景知识概念参考微软链接: 强制完整性控制 - Win32 应用程序 |Microsoft 学习 授权) (模拟级别 - Win32 apps | Microsoft Learn DuplicateTokenEx 函数 (securitybaseapi.h) - Win32 apps | Microsoft Learn 本文主要演示 low, medium, high, and system 四…...

【测试语言篇一】Python进阶篇:内置容器数据类型

一、列表 列表(List)是一种有序且可变的容器数据类型。 与集合(Set)不同,列表允许重复的元素。 它方便保存数据序列并对其进行进一步迭代。 列表用方括号创建。 my_list ["banana", "cherry", …...

湘潭大学软件工程专业选修 SOA 期末考试复习(二)

文章目录 回顾序言第一章课后题填空选择简答 第二章课后题填空选择编程 计划第三章课后题填空选择简答编程 第四章课后题填空选择简答编程 第五章课后题填空选择简答编程 第六章课后题说明 第七章课后题填空选择简答编程 第八章课后题填空选择简答编程 第九章课后题填空选择简答…...

改进的正弦余弦算法复现

本文所涉及所有资源均在 传知代码平台 可获取。 目录 一、背景及意义 (一)背包问题背景...

Day13杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 class Solution {public List<List<Integer>> generate(int numRows) {List<List<Integer>> res new Arra…...

【c知道】Hadoop工作原理。

请解释一下Hadoop中MapReduce的工作原理&#xff0c;并说明如何进行MapReduce程序的编写和调试。 Hadoop MapReduce是一种分布式计算模型&#xff0c;它将大规模的数据处理任务分解成一系列小的、独立的任务&#xff08;Map任务&#xff09;和后续的聚合任务&#xff08;Reduce…...

React.lazy() 懒加载

概要 React.lazy() 是 React 16.6 引入的一个功能&#xff0c;用于实现代码分割&#xff08;code splitting&#xff09;。它允许你懒加载组件&#xff0c;即在需要时才加载组件&#xff0c;而不是在应用初始加载时就加载所有组件。这种方法可以显著提高应用的性能&#xff0c…...

【自学笔记】神经网络(1)

文章目录 介绍模型结构层&#xff08;Layer&#xff09;神经元 前向传播反向传播Q1: 为什么要用向量Q2: 不用激活函数会发生什么 介绍 我们已经学习了简单的分类任务和回归任务&#xff0c;也认识了逻辑回归和正则化等技巧&#xff0c;已经可以搭建一个简单的神经网络模型了。 …...

c#————扩展方法

关键点&#xff1a; 定义扩展方法的类和方法必须是静态的&#xff1a; 扩展方法必须在一个静态类中定义。扩展方法本身也必须是静态的。第一个参数使用 this 关键字&#xff1a; 扩展方法的第一个参数指定要扩展的类型&#xff0c;并且在这个参数前加上 this 关键字。这个参数…...

前向-后向卡尔曼滤波器(Forward-Backward Kalman Filter)资料汇总

《卡尔曼滤波引出的RTS平滑》参考位置2《卡尔曼滤波系列——&#xff08;六&#xff09;卡尔曼平滑》《关于卡尔曼滤波和卡尔曼平滑关系的理解》——有m语言例程《Forward Backwards Kalman Filter》——Matlab软件《卡尔曼滤波与隐马尔可夫模型》...

云集电商:如何通过 OceanBase 实现降本 87.5%|OceanBase案例

云集电商&#xff0c;一家聚焦于社交电商的电商公司&#xff0c;专注于‘精选’理念&#xff0c;致力于为会员提供超高性价比的全品类精选商品&#xff0c;以“批发价”让亿万消费者买到质量可靠的商品。面对近年来外部环境的变化&#xff0c;公司对成本控制提出了更高要求&…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误&#xff0c;它们的含义、原因和解决方法都有显著区别。以下是详细对比&#xff1a; 1. HTTP 406 (Not Acceptable) 含义&#xff1a; 客户端请求的内容类型与服务器支持的内容类型不匹…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...