redis持久化知识汇总

redis持久化知识汇总

主要分两个持久化方式RDB和AOF

RDB

RDB是以快照的形式将数据写入二进制文件,可以通过save和bgsave触发,也可以自动化

Save方式是直接在主进程进行持久化操作,缺点就是会导致阻塞服务器。

Bgsave方式会先创建子进程,在子进程中进行持久化操作,不影响主进程,但是持久化期间也不能接受主进程新的数据更新命令。

  • 优势

(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。

(2)生成RDB文件的时候,redis主进程会fork()一个子进程来处理所有保存工作,主进程不需要进行任何磁盘IO操作。

(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

  • 劣势

RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,bgsave存储方式会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据。

AOF

AOF持久化是将每一天的redis数据更新命令写入AOF文件

触发规则(AOF默认everysec规则。):

always 每次执行缓存命令都会执行,写入AOF文件。

everysec 每秒执行一次同步,异步操作,如果一秒内宕机,就会有数据丢失。

no 表示不主动同步,由系统完成操作,每30秒执行一次同步。

  • 优势

(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。

(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。

(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

(4)AOF日志文件的命令通过非常可读的方式进行记录,这个特性非常适合做灾难性的误删除的紧急恢复。比如某人不小心用flushall命令清空了所有数据,只要这个时候后台rewrite还没有发生,那么就可以立即拷贝AOF文件,将最后一条flushall命令给删了,然后再将该AOF文件放回去,就可以通过恢复机制,自动恢复所有数据

  • 劣势

(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大

(2)AOF开启后,支持的写QPS会比RDB支持的写QPS低,因为AOF一般会配置成每秒fsync一次日志文件,当然,每秒一次fsync,性能也还是很高的

(3)以前AOF发生过bug,就是通过AOF记录的日志,进行数据恢复的时候,没有恢复一模一样的数据出来。

RDB文件的载入和AOF文件的载入比较

  • RDB文件在服务器启动时自动载入,只要检测到RDB文件就自动载入并处于阻塞状态,直到载入完成。

  • AOF文件的优先级高于RDB文件,如果服务器开启了AOF持久化功能,则在重启时会加载AOF文件,而不是RDB。(AOF通常更新频率高于RDB文件)

  • 如果AOF持久化关闭,才回去找RDB文件。

RDB快照的配置

save 900 1      // 900内,有1条写入,则产生快照save 300 1000   // 如果300秒内有1000次写入,则产生快照save 60 10000  // 如果60秒内有10000次写入,则产生快照
stop-writes-on-bgsave-error yes  // 后台备份进程出错时,主进程是否停止写入rdbcompression yes    // 导出的rdb文件是否压缩rdbchecksum   yes //  导入rbd恢复数据时,是否验证rdb的完整性dbfilename dump.rdb  //导出来的rdb文件名dir ./  //rdb的放置路径

AOF日志的配置

appendonly no # 是否打开 aof日志功能appendfsync always   # 每1个命令,都立即同步到aof. 安全,速度慢#appendfsync everysec # 折衷方案,每秒写1次#appendfsync no      # 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof. 同步频率低,速度快,no-appendfsync-on-rewrite  yes: # 正在导出rdb快照的过程中,是否停止同步aofauto-aof-rewrite-percentage 100 #aof文件大小比起上次重写时的大小,增长率100%时,重写auto-aof-rewrite-min-size 64mb #aof文件,至少超过64M时,才重写

问题总结

在dump rdb过程中,aof如果停止同步,会不会丢失?

答: 不会,所有的操作缓存在内存的队列里,dump完成后,统一操作.

aof重写是指什么?

答: aof重写是指把内存中的数据,逆化成命令,写入到aof日志里,以解决 aof日志过大的问题。

如果rdb文件和aof文件都存在,优先用谁来恢复数据?

答: aof

2种是否可以同时用?

答: 可以,而且推荐这么做

恢复时rdb和aof哪个恢复的快

答: rdb快,因为其是数据的内存映射,直接载入到内存;而aof是命令,需要逐条执行

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

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

相关文章

Blender教程(基础)-初识快捷键-02

Blender是一款开源的跨平台全能三维动画制作软件,提供从建模、动画、材质、渲染到音频处理、视频剪辑等一系列动画短片制作解决方案。Blender拥有方便在不同工作下使用的多种用户界面。以下是一些常用的Blender快捷键: 全选物体:A 框选物体&…

Linux下安装openresty

Linux下安装openresty 十一、Linux下安装openresty11.1.概述11.2.下载OpenResty并安装相关依赖:11.3.使用wget下载:11.4.解压缩:11.5.进入OpenResty目录:11.6.编译和安装11.7.进入OpenResty的目录,找到nginx:11.8.在conf目录下的nginx.conf添…

2870.使数组为空的最少操作次数

给你一个下标从 0 开始的正整数数组 nums 。 你可以对数组执行以下两种操作 任意次 : 从数组中选择 两个 值 相等 的元素,并将它们从数组中 删除 。从数组中选择 三个 值 相等 的元素,并将它们从数组中 删除 。 请你返回使数组为空的 最少…

C# 获取计算机信息

目录 一、本机信息 1、本机名 2、获得本机MAC地址 3、获得计算机名 4、显示器分辨率 5、主显示器分辨率 6、系统路径 二、操作系统信息 1、操作系统类型 2、获得操作系统位数 3、获得操作系统版本 三、处理器信息 1 、处理器个数 四、CPU信息 1、CPU的个数 2、…

【分布式技术专题】「探索高性能远程通信」基于Netty的分布式通信框架实现(附通信协议和代码)(上)

基于Netty的分布式通信框架实现 前提介绍回顾Dubbo分布式通信框架组成元素程序执行流程消息协议设计实现机制ChannelInboundHandlerAdapter自定义事件处理 ChannelOutboundHandlerAdapter 编(解)码处理器编码过程阶段ChannelOutboundHandlerAdapter序列化实现ChannelOutboundHa…

wireshark利用sshdump自身组件进行远程实时抓包过滤

引言 以前在不了解wireshark可以远程抓包的时间,经常通过tcpdump在远程linux主机将抓包文件保存下来后,然后拖拽入windows中再打开,进行分析查看。 此过程比较繁琐,也不够实时。比较常用的抓包动作是仅出现某特征的报文后&#…

秀!巧用字典推导式将列表中的元素“值”转换字典格式

示例: contact_list [{display_name: 10手机, data1: 1-000-10}, {display_name: 11手机, data1: 1-000-11}, ] 把上面的列表转成下面的字典 contact_dir {10手机: 1-000-10, 11手机: 1-000-11} 巧用字典推导式将列表中的元素转换为所需的字典格式,下…

数据结构与算法:复杂度

友友们大家好啊,今天开始正式学习数据结构与算法有关内容,后续不断更新数据结构有关知识内容,希望多多支持! 数据结构: 数据结构是用于存储和组织数据的方式,以便可以有效地访问和修改数据。不同的数据结构…

1.23神经网络框架(sig函数),逆向参数调整法(梯度下降法,链式法则(理解,及处理多层神经网络的方式))

框架 输入层 隐藏层 存在一个阈值,如果低于某一阈值就不激活;高于了就激活 输出层 逆向参数调整方法 初始阶段,随机设置权重值w1,w2 依据训练集 两个数学方法 (梯度下降、链式法则) 调参借助两个数学方法 当导数为…

2024.1.27 GNSS 学习笔记

1.精确的描述轨道的一组数据(星历)是实现精确定位与导航的基础。 2.GNSS卫星广播星历的提供方式一般有两种:一种是提供开普勒轨道参数和必要的轨道摄动改正项参数,如GPS、BDS、Galileo三大系统采用此种模式,还有QZSS系统;另一种是…

Spring Cloud 之Config详解

大家好,我是升仔 在微服务架构中,统一的配置管理是维护大规模分布式系统的关键。Spring Cloud Config为微服务提供集中化的外部配置支持,它可以与各种源代码管理系统集成,如Git、SVN等。本文将详细介绍如何搭建配置服务器、管理客…

用ASM HEMT模型提取GaN器件的参数

标题:Physics-Based Multi-Bias RF Large-Signal GaNHEMT Modeling and Parameter Extraction Flow (JEDS 17年) 模型描述 该模型的核心是对表面势(ψ)及其随施加的栅极电压(Vg)和漏极电压(Vd&#xff09…

unordered_mapunordered_set封装

map&&set unordered_map&&unordered_set介绍unordered_set哈希桶的封装部分unordered_map的封装unordered_set封装 unordered_map&&unordered_set介绍 看名字是和map\set类似的迭代器,和map\set的区别如下: map底层是红黑树封…

C++ STL中list迭代器的实现

list 的模拟实现中,重难点在于迭代器功能的实现,因此本文只围绕 iterator 及 const_iterator 的设计进行介绍,其余如增删查改则不再赘述——在C语言的基础上,这些都非常简单。 与 string / vector 不同,list 的节点原生…

C++11 unordered_map使用哈希实现,map是使用红黑树实现的

unordered_map C++11 引入了一套标准库中的哈希函数和哈希容器,用于提供高效的哈希功能。这些特性位于 <unordered_map> 和 <unordered_set> 头文件中。 C++11 中的哈希容器是基于散列表实现的,可以快速插入、查找和删除元素,并具有平均常数时间复杂度的操作。…

【时间安排】

最近刚刚回到家&#xff0c;到家就是会有各种事情干扰&#xff0c;心里变乱人变懒的&#xff0c;而要做的事情也要继续&#xff0c;写论文&#xff0c;改简历&#xff0c;学习新技能。。 明天后天两天写论文改简历 周一&#xff08;早上去城市书房&#xff0c;可能吵一点戴个耳…

C#学习笔记_变量、数据类型、数据类型转换

变量 一、概念 变量是用于在计算机的内存中存储数据。 二、语法 声明变量&#xff1a;数据类型 变量名; 变量赋值&#xff1a;变量名 表达式;使用变量&#xff1a;变量名 具体可见以下代码&#xff1a; using System; using System.Collections.Generic; using System.L…

【深度学习:开源BERT】 用于自然语言处理的最先进的预训练

【深度学习&#xff1a;开源BERT】 用于自然语言处理的最先进的预训练 是什么让 BERT 与众不同&#xff1f;双向性的优势使用云 TPU 进行训练BERT 结果让 BERT 为您所用 自然语言处理 &#xff08;NLP&#xff09; 面临的最大挑战之一是训练数据的短缺。由于 NLP 是一个具有许多…

C#学习(十一)——Array和Collection

一、集合 集合重要且常用 孤立的数据是没有意义的&#xff0c;集合可以作为大量数据的处理&#xff0c;可进行数据的搜索、迭代、添加、删除。 C#中&#xff0c;所有集合都必须实现ICollection接口&#xff08;数组Array除外&#xff09; 集合说明Array数组&#xff0c;固定长…

【GitHub项目推荐--基于 AI 的口语训练平台】【转载】

Polyglot Polyglot 是一个开源的基于 AI 的口语训练平台客户端&#xff0c;可以在 Windows、Mac 上使用。 比如你想练习英语口语&#xff0c;只需在该平台配置一个虚拟的 AI 国外好友&#xff0c;你可以通过发语音的方式和 AI 好友交流&#xff0c;通过聊天的方式提升你的口…