redis持久化机制:RDB和AOF

Redis的持久化机制主要依赖于两种方法:RDB(Redis Database)和AOF(Append Only File)。这两种机制可以单独使用,也可以同时使用,以提高数据的持久性和可靠性。

RDB(Redis Database)

  1. 工作原理

    • RDB通过创建数据集的快照来进行持久化。
    • 快照创建可以在指定的时间间隔内自动完成,也可以手动触发。
    • 当快照创建时,Redis会执行一个fork操作,创建一个子进程。
    • 子进程将当前内存中的数据写入到临时RDB文件中。
    • 写入完成后,这个临时RDB文件替换掉旧的RDB文件。
    • 在这个过程中,主进程可以继续处理客户端请求。
  2. 优点

    • 快照占用的空间较小,因为它只是某个时间点的数据副本。
    • 恢复数据时速度较快。
  3. 缺点

    • 如果Redis崩溃,自上次快照以来的所有更改都会丢失。
  • 在大型数据库上创建快照可能会导致性能问题。

AOF(Append Only File)

  1. 工作原理

    • AOF通过记录对数据库进行的所有写操作来实现持久化。
    • 每个写操作都会被追加到AOF文件的末尾。
    • Redis支持不同的AOF重写策略,如每次写入后、每秒写入或者从不写入。
    • 随着操作的增多,AOF文件的大小会不断增长,因此Redis提供了AOF重写的功能,这可以压缩AOF文件的大小。
  2. 优点

    • 提供了更好的持久性保证,因为每个写操作都被记录下来了。
    • 即使在极端条件下,比如系统崩溃或断电,最多也就丢失一秒的数据(取决于AOF的配置)。
  3. 缺点

    • AOF文件通常比RDB文件大。
    • 在高负载下,AOF可能会降低Redis的性能。

结合使用RDB和AOF

  • 在实际应用中,通常建议同时使用RDB和AOF,以结合两者的优点。
  • 可以配置Redis在特定条件下进行RDB快照,同时持续地将操作记录到AOF文件中。
  • 在数据恢复时,Redis会先读取AOF文件,因为它更完整地记录了所有写操作。

这样配置后,可以获得RDB的快速恢复能力和AOF的高可靠性。

关键配置项

RDB配置

  1. 触发快照的条件

    • save <seconds> <changes>:当满足“在指定的秒数内有多少次更改”时,自动创建快照。
    • 例如:
       

      bashCopy code

      save 900 1 # 在900秒内如果至少有1个key被更改,则触发快照 save 300 10 # 在300秒内如果至少有10个keys被更改,则触发快照 save 60 10000 # 在60秒内如果至少有10000个keys被更改,则触发快照

  2. 快照文件的位置

    • dbfilename <filename>:指定RDB文件的名称。
    • dir <dir>:指定RDB文件的存储目录。

AOF配置

  1. 启用AOF持久化

    • appendonly yes:启用AOF持久化机制。
  2. AOF文件的写入策略

    • appendfsync always:每次写入都同步到磁盘(最安全,但性能最低)。
    • appendfsync everysec:每秒同步一次到磁盘(推荐,性能和安全性平衡)。
    • appendfsync no:由操作系统决定何时同步到磁盘(最快,但最不安全)。
  3. AOF文件的位置

    • appendfilename "<filename>":指定AOF文件的名称。
  4. AOF重写配置

    • auto-aof-rewrite-percentage <percentage>:当AOF文件增长达到设置的百分比时触发重写。
    • auto-aof-rewrite-min-size <size>:设置触发重写的AOF文件最小大小。
# RDB配置
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /var/lib/redis# AOF配置
appendonly yes
appendfsync everysec
appendfilename "appendonly.aof"
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

注意事项

  • 配置文件的路径通常在启动Redis服务时指定。默认情况下,它可能位于/etc/redis/redis.conf
  • 修改配置文件后,需要重启Redis服务,或者通过CONFIG REWRITE命令在线重载配置。
  • 确保你的磁盘空间足够存储RDB和AOF文件,特别是当数据库很大时。
  • 在生产环境中,适当调整这些设置以达到最佳的性能和数据安全平衡。

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

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

相关文章

Mysql深度分页优化的一个实践

问题简述: 最近在工作中遇到了大数据量的查询场景, 日产100w左右明细, 会查询近90天内的数据, 总数据量约1亿, 业务要求支持分页查询与导出. 无论是分页或导出都涉及到深度分页查询, mysql通过limit/offset实现的深度分页查询会存在全表扫描的问题, 比如offset1000w, limit10…

7. UE5 RPG修改GAS的Attribute的值

前面几节文章介绍了如何在角色身上添加AbilitySystemComponent和AttributeSet。并且还实现了给AttributeSet添加自定义属性。接下来&#xff0c;实现一下如何去修改角色身上的Attribute的值。 实现拾取药瓶回血功能 首先创建一个继承于Actor的c类&#xff0c;actor是可以放置到…

c++八股6

C内存释放&#xff1a; 在C中&#xff0c;动态分配的内存通过new操作符分配&#xff0c;并通过delete操作符释放。当不再需要对象时&#xff0c;应当确保正确调用delete以防止内存泄漏。现代C中&#xff0c;智能指针如std::unique_ptr、std::shared_ptr等可以自动管理内存&…

WAF攻防相关知识点总结2-代码免杀绕过

WAF的检测除了有对于非正常的流量检测外还对于非正常的数据包特征进行检测 以宝塔为例 在宝塔的后台可以放置一句话木马的文件 宝塔不会对于这个文件进行拦截&#xff0c;但是一旦我们使用菜刀蚁剑等webshell工具去进行连接的时候&#xff0c;数据报中有流量特征就会被拦截 …

JRT和springboot比较测试

想要战胜他&#xff0c;必先理解他。这两天系统的学习Maven和跑springboot工程&#xff0c;从以前只是看着复杂&#xff0c;现在到亲手体验一下&#xff0c;亲自实践的才是更可靠的了解。 第一就是首先Maven侵入代码结构&#xff0c;代码一般要按约定搞src/main/java。如果是能…

C#判断输入的数字是否符合货币格式

目录 一、用正则表达式判断输入是否符合货币格式 二、用double.TryParse()判断输入是否符合货币格式 一、用正则表达式判断输入是否符合货币格式 // 判断输入是否货币合格 using System.Text.RegularExpressions; namespace IsCurrency_Format {partial class Program{stati…

虚幻UE 特效-Niagara特效实战-雨天

回顾Niagara特效基础知识&#xff1a;虚幻UE 特效-Niagara特效初识 其他两篇实战&#xff1a;虚幻UE 特效-Niagara特效实战-火焰、烛火、虚幻UE 特效-Niagara特效实战-烟雾、喷泉 本篇笔记我们再来实战雨天&#xff0c;雨天主要用到了特效中的事件。 文章目录 一、雨天1、创建雨…

九、K8S-label和label Selector

label和label selector 标签和标签选择器 1、label 标签&#xff1a; 一个label就是一个key/value对 label 特性&#xff1a; label可以被附加到各种资源对象上一个资源对象可以定义任意数量的label同一个label可以被添加到任意数量的资源上 2、label selector 标签选择器 L…

k8s的对外服务ingress

1、service的作用体现在两个方面 &#xff08;1&#xff09;集群内部&#xff1a;不断跟踪pod的变化&#xff0c;更新deployment中的pod对象&#xff0c;基于pod的ip地址不断变化的一种服务发现机制 &#xff08;2&#xff09;集群外部&#xff1a;类似于负载均衡器&#xff…

【计算机组成与体系结构Ⅱ】Tomasulo 算法模拟和分析(实验)

实验5&#xff1a;Tomasulo 算法模拟和分析 一、实验目的 1&#xff1a;加深对指令级并行性及开发的理解。 2&#xff1a;加深对 Tomasulo 算法的理解。 3&#xff1a;掌握 Tomasulo 算法在指令流出、执行、写结果各阶段对浮点操作指令以及 load 和 store 指令进行了什么处…

MATLAB R2023a安装教程

鼠标右击软件压缩包&#xff0c;选择“解压到MATLAB.R2023a”。 打开解压后的文件夹&#xff0c;鼠标右击“R2023a_Windows_iso”选择“装载”。 鼠标右击“setup.exe”选择“以管理员身份运行”。 点击“高级选项”选择“我有文件安装密钥”。 点击“是”&#xff0c;然后点击…

【MCAL】ADC模块详解

目录 前言 正文 1.ADC模块介绍 2.关键概念及依赖的模块 2.1 ADC依赖的模块 3.ADC功能示例 3.1 ADC Buffer Access Mode示例 3.1.1配置&#xff08;Configuration&#xff09; 3.1.2 初始化&#xff08;Initialization&#xff09; 3.1.3 Adc_GetStreamLastPointer的使…

IP双栈技术

双栈技术产生 在IPv4 Internet向IPv6 Internet过渡的初期&#xff0c;IPv4网络已被大量部署&#xff0c;而IPv6网络只是散布在世界各地的一些孤岛。故而需要一些技术实现IPv6孤岛之间的互联以及IPv4节点和IPv6节点之间的互通。 双栈协议概念 双栈协议是指所有设备必须支持IP…

使用Python的pygame库实现下雪的效果

使用Python的pygame库实现下雪的效果 关于Python中pygame游戏模块的安装使用可见 https://blog.csdn.net/cnds123/article/details/119514520 先给出效果图&#xff1a; 源码如下&#xff1a; import pygame import random# 初始化pygame pygame.init()# 设置屏幕尺寸 width…

C/C++ 容易混淆的指针声明总结

指针数组 int *p[3]; 首先从p处开始&#xff0c;先于[ ] 结合&#xff0c;因为其优先级高&#xff08;在C中&#xff0c;[]属于后缀运算符与( ) 同为最高优先级&#xff09;&#xff0c;所以p是一个数组。然后再与 * 结合&#xff0c;说明数组里的元素是指针类型。之后再与 i…

【重学C语言】四、常量、变量和基本数据类型转换

【重学C语言】四、常量、变量和基本数据类型转换 1. 常量和变量1.1 常量1.1.1 直接常量1.1.1.1 整数常量1.1.1.2 浮点常量1.1.1.3 字符常量1.1.1.4字符串常量 1.1.2符号常量 1.2 标识符1.3 变量1.3.1 变量的定义1.3.2 左值&#xff08;Lvalues&#xff09;和右值&#xff08;Rv…

Spring中@Async的使用技巧

引言 在Java开发中&#xff0c;我们常常会遇到需要执行耗时操作的场景&#xff0c;例如文件上传、网络请求等。为了提高系统的响应速度和并发能力&#xff0c;我们可以使用异步方法来处理这些任务。本文将介绍如何在Java中使用异步方法&#xff0c;并探讨其中的一些注意事项。…

TDengine启动和连接问题

TDengine启动和连接问题 测试TDengine&#xff0c;使用docker安装运行&#xff0c;宿主机ip 192.168.0.100。下载windows客户端&#xff0c;配置如下&#xff1a; hosts配置&#xff1a;192.168.0.100 tdnode1taos.cfg配置&#xff1a;firstEp和fqdn均为tdnode1&#xff0c;端…

一款自动化提权工具

免责声明 请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;作者不为此承担任何责任。工具来自网络&#xff0c;安全性自测&#xff0c;如有侵权请联系删除。…

1. 安装Git

01. 安装Git 最早Git是在Linux上开发的&#xff0c;很长一段时间内&#xff0c;Git也只能在Linux和Unix系统上跑。不过&#xff0c;慢慢地有人把它移植到了Windows上。现在&#xff0c;Git可以在Linux、Unix、Mac和Windows这几大平台上正常运行了。 要使用Git&#xff0c;第一…