redis小知识

news2024/11/15 9:28:29

AOF与RDB的区别

     AOF (Append Only File) 和 RDB (Redis Database) 都是Redis中的持久化机制,但有以下几点不同之处:

  1. 内容格式:AOF 以日志的形式记录所有写操作命令,而 RDB 则是在指定的时间间隔内对数据库进行快照,将数据保存到一个二进制文件中。

  2. 文件大小:AOF 文件通常会比 RDB 文件大,因为它记录了所有写操作命令,而 RDB 文件只是数据的快照。

  3. 恢复速度:AOF 在恢复数据时需要重新执行所有写操作命令,而 RDB 只需要将数据从文件加载到内存中。因此,RDB 的恢复速度通常比 AOF 快,特别是当数据库较大时。

  4. 可读性:AOF 文件以文本形式存储命令,因此可读性较好,可以直接查看和修改。而 RDB 是以二进制格式存储的,不易读取和编辑。

  5. 容灾性:AOF 采用追加写入方式,实时记录数据操作,因此更可靠,数据丢失的风险较低。而 RDB 是定时保存数据库快照,如果在保存之前发生故障,可能会有数据丢失。

        AOF 适用于需要最小化数据丢失风险的场景,而 RDB 适用于需要较快的数据恢复速度和较小的文件大小的场景。在实际应用中,可以根据具体需求选择使用哪种持久化机制,也可以同时使用两种方式,以实现更好的容灾性能和性能优化。

AOF持久化

      AOF持久化是一种将数据持久化到磁盘的方式,通过记录操作日志的方式将数据的修改操作记录下来,当需要恢复数据时,只需要重新执行这些操作即可。

     AOF持久化解决了数据持久化的实时性问题,主流的解决方案是通过将操作指令写入到AOF文件中,实现数据的实时同步。当客户端发送指令时,指令并不会立即执行,而是先存入缓冲区,生成一个AOF文件。当AOF文件的大小达到一定阶段或者间隔一定时间后,系统会将缓冲区中的指令同步到AOF文件中。

在AOF写数据的过程中,可以通过appendfsync参数来设定同步策略。有三种策略可选择:

  1. always:每次指令都会同步进AOF文件,保证数据的完整性和准确性,但由于需要频繁的磁盘写入,效率较低。

  2. everysec:每秒钟会将缓冲区中的指令同步一次到AOF文件中。虽然会导致一秒钟的数据丢失,但是在大部分场景下仍然可以接受,并且能够提供较好的性能。

  3. no:由操作系统控制同步策略,整体不可控。这种策略下可能会存在数据丢失的风险,不推荐在生产环境中使用。

可以通过设置appendonly参数的值为yes来开启AOF持久化配置,默认情况下是关闭的。同时,可以通过设置appendfsync参数的值来选择适合业务需求的同步策略。

AOF工作原理

         AOF (Append-Only File) 是Redis持久化机制之一,它记录了所有写操作的日志,以文件追加的方式保存在磁盘上。AOF工作原理和eveysec开启重写的流程如下所述:

  1. 执行set指令:当执行一个写操作时,Redis会将这个操作以命令的形式追加到AOF文件的末尾。这个操作会被主进程处理。

  2. 开启子进程:在执行set指令时,主进程会fork出一个子进程来处理重写操作。

  3. 缓存区:在执行set指令时,Redis同时会开辟一个AOF重写的缓冲区,用于向重写子进程提供数据。重写子进程会从缓冲区中读取数据。

  4. 执行bgrewriteaof指令:通过执行bgrewriteaof指令,主进程开始进行AOF重写。

  5. 重写子进程:在执行bgrewriteaof指令后,主进程会fork出另一个子进程来执行AOF重写操作。这个子进程会发送一条提示信息表示正在执行AOF重写操作。

  6. 创建重写后的AOF文件:重写子进程会遍历整个数据库,将所有的操作以命令的形式写入一个临时文件中。

  7. AOF文件替换:当重写子进程完成重写操作后,它会将临时文件重命名为新的AOF文件,并将新文件路径发送给主进程。

  8. 替换AOF文件:主进程接收到新的AOF文件路径后,将原来的AOF文件替换为新文件。这样,AOF重写操作就完成了。

      AOF重写操作的目的是为了解决AOF文件过大的问题。随着时间的推移,AOF文件会越来越大,影响Redis的加载性能。通过AOF重写机制,可以将AOF文件压缩成更小的尺寸,同时保留了与原文件等效的数据。

     

AOF写数据遇到的问题 

      AOF写数据遇到的问题:

  • 同一个key设置多次:如果同一个key被设置多次,前几次的设置可能是无效的数据,不需要执行,只需要保留最终的设置。
  • 重写:为了提高AOF的持久化效率、数据恢复效率和磁盘利用率,需要进行AOF重写操作,将AOF文件中的冗余指令去除,只保留最终数据的写入命令。
  • 作用:提高持久化效率、数据恢复效率和磁盘利用率。

AOF写数据的规则:

  • 进程内超时的数据不写入AOF文件:当数据达到超时时间后,如果还没有被修改,就不需要再写入AOF文件。
  • 忽略无效指令,只保留最终数据的写入命令:对于同一个key的多次写入指令,只需要保留最后一次的写入指令,前面的写入指令可以忽略。
  • 对同一数据的多条写入命令,合并为一条:多条写入同一数据的指令可以合并为一条,减少写入AOF文件的指令数量。

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

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

相关文章

柏拉图式表征:人工智能深度网络模型是否趋于一致?

人工智能模型是否正在向现实的统一表征演进?柏拉图表征假说认为,人工智能模型正在趋同。 麻省理工学院最近的一篇论文引起了我的注意,因为它提出了一个令人印象深刻的观点:人工智能模型正在趋同,甚至跨越了不同的模态…

GeoScene产品学习视频收集

1、易智瑞运营的极思课堂https://www.geosceneonline.cn/learn/library 2、历年易智瑞技术公开课视频资料 链接:技术公开课-易智瑞信息技术有限公司,GIS/地理信息系统,空间分析-制图-位置智能-地图 3、一些关于GeoScene系列产品和技术操作的…

计算机-编程相关

在 Linux 中、一切都是文件、硬件设备是文件、管道是文件、网络套接字也是文件。 for https://juejin.cn/post/6844904103437582344 fork 进程的一些问题 fork 函数比较特殊、一次调用会返回两次。在父进程和子进程都会返回。 每个进程在内核中都是一个 taskstruct 结构、for…

微软MSBuild大会发布Copilot+PC:技术革新还是隐私噩梦?

微软在最近的MSBuild 2024大会上发布了全新的CopilotPC概念,这一技术结合了高通骁龙X Elite芯片,将人工智能与PC紧密结合。此次发布引起了广泛关注,不仅是因为其技术创新,还因为潜在的隐私问题。甚至连Elon Musk也对此表示担忧&am…

第197题|奇偶性的四则运算,你掌握了吗?|函数强化训练(四)|武忠祥老师每日一题 5月22日

解题思路:这道题如果我们会21号的题的话,简直是小菜一碟!主要就是要用到下面这个结论: (A) 直接看奇偶性我们不好看,我们需要拆项: 我们先看前一项的奇偶性,x是奇函数&a…

自动化测试用例结构

标准的用例结构: 用力标题前提条件用例步骤预期结果实际结果 测试用例对比:

高稳定数显芯片防干扰抗噪数码屏驱动高亮LED驱动IC-VK16K33A/AA 最大13×3的按键扫描

产品型号:VK16K33A/AA 产品品牌:永嘉微电/VINKA 封装形式:SOP28/SSOP28 原厂,工程服务,技术支持! 概述 VK16K33A/AA是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据…

MoonDream2微调指南【最小VLM】

在本指南中,我们将探讨如何使用计算机视觉数据集对完全开源的小型视觉语言模型 Moondream2 进行微调,以计数项目(这是 GPT-4V 一直表现不一致的任务),并以一种可以依赖输出用于生产应用程序的方式进行微调。 视觉语言…

k8s之yaml文件详解

文章目录 k8s之yaml文件详解一、关于yaml文件1、k8s支持的文件格式2、YAML语言格式3、查看api资源版本标签4、编写nginx-test.yaml资源配置清单4.1 编写资源配置清单4.2 创建资源对象4.3 查看创建的pod资源 5、创建service服务对外提供访问并测试5.1 编写nginx-svc-test.yaml5.…

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

软考中级嵌入式系统设计师知识点

主要介绍一些软考中级嵌入式系统设计师涉及到的一些考点。 文章目录 前言 一、嵌入式系统设计师 二、知识点 总结 前言 主要介绍一些软考中级嵌入式系统设计师涉及到的一些考点。 提示:以下是本篇文章正文内容,下面案例可供参考 一、嵌入式系统设计师 …

科研——ICONIP论文修改和提交

文章目录 Springer Nature Code of Conduct and Book Publishing Policies行为准则和出版的道德规范文章的准备Structing Your paperLengths of Paper文章长度FontsPage Numbering and Running HeadsFigures and TablesFormulaeFootnotesCitation by Number Additional Informa…

C++ | Leetcode C++题解之第107题二叉树的层序遍历II

题目&#xff1a; 题解&#xff1a; class Solution { public:vector<vector<int>> levelOrderBottom(TreeNode* root) {auto levelOrder vector<vector<int>>();if (!root) {return levelOrder;}queue<TreeNode*> q;q.push(root);while (!q.e…

【情感大师智能体】:定制专属情感支持

文章目录 &#x1f4d1;前言一、快速创建智能体二、配置表单2.1 基础配置2.2 指令配置什么是指令&#xff08;prompt&#xff09;&#xff1f; 2.3 我的指令如下&#xff1a; 三、体验发布四、小结 &#x1f4d1;前言 随着智能体技术的快速发展&#xff0c;用户对智能体的需求不…

基于ucos-ii操作系统的生产者消费者-问题

目 录 第1章 题目分析. 1 1.1 生产者线程... 1 1.2 消费者线程... 1 1.3 缓冲区... 1 1.4 进程的同步与互斥... 1 第2章 解决方案. 2 2.1 总体方案... 2 2.2 生产者问题... 2 2.3 消费者问题... 3 2.4 进程问题... 5 第3章 实验结果. 6 3.1 运行结果... 6 3.2 结果分析... 8 第…

【OpenGL实践10】关于几何着色器

目录 一、说明 二、几何着色器 2.1 设置 2.2 基本几何着色器 2.2.1 输入类型 2.2.2 输出类型 2.2.3 顶点输入 2.2.4 顶点输出 2.3 创建几何着色器 2.4 几何着色器和顶点属性 三、动态生成几何体 四、结论 练习 一、说明 几何着色器的应用比较高级&#xff0c;关于…

探索 Rust 语言的精髓:深入 Rust 标准库

探索 Rust 语言的精髓&#xff1a;深入 Rust 标准库 Rust&#xff0c;这门现代编程语言以其内存安全、并发性和性能优势而闻名。它不仅在系统编程领域展现出强大的能力&#xff0c;也越来越多地被应用于WebAssembly、嵌入式系统、分布式服务等众多领域。Rust 的成功&#xff0…

databricks~Unity Catalog

Unity Catalog hierarchy 包含了用户授权管理信息和元数据信息 workspace with unity catalog hierarchy unity metastore Ref: https://www.youtube.com/playlist?listPLY-V_O-O7h4fwcHcXgkR_zTLvddvE_GfC

欢乐钓鱼大师攻略大全,游戏自动辅助,钓鱼大全!

欢迎来到《欢乐钓鱼大师》的攻略大全&#xff01;本文将为你详细介绍游戏中的各类玩法、技巧和注意事项&#xff0c;帮助你快速掌握游戏精髓&#xff0c;成为一名真正的钓鱼大师。攻略内容包括新手鱼竿选择、锦标赛攻略、实用技巧、藏宝图玩法、箱子开法等多个方面。让我们一起…

数字信号处理:matlab解差分方程

1. 验证全响应 %验证全响应零状态响应零输入响应 %y(n)4y(n-1)x(n),其中x(n)δ(n),y(-1)2.clc;%清屏 clear all;%清除所有变量的值 b[1]; a[1,-4]; ys[2]; xs[0];%没有初始值&#xff0c;就是0 xn[1, zeros(1,4)];%输入序列&#xff0c;假设长度是5&#xff0c;则输出长度也是…