Redis持久化(RDB 和 AOF)

一、RDB持久化

RDB(Redis DataBase):

配置文件中对其的相关配置:

触发机制:

恢复rdb文件:

优点:

缺点:

二、AOF持久化

AOF(Append Only File):

配置文件中对其的相关配置:

恢复aof文件:

优点:

缺点:


Redis中的数据存在内存中肯定是不安全的,所以需要将数据进行持久化操作,防止数据丢失造成的危害。

 

一、RDB持久化

RDB(Redis DataBase):

指定时间间隔内将内存中的数据快照集体写入磁盘,也就是Snapshot快照,恢复时将快照文件直接读到内存中。

Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入一个临时文件中,待持久化过程都结束,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程不进行任何IO操作。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式比AOF方式更加高效。RDB的缺点是最后一次持久化后的数据可能丢失。

默认情况下是 RDB,一般不需要修改这个配置!

在主从复制中,rdb就是备用,从机上!

配置文件中对其的相关配置:

1、RDB保存的文件 dump.rdb (在生成环境中经常将rdb文件备份)

2、RDB默认的保存规则:900s中发生一次修改就进行保存

触发机制:

  1. save的规则满足情况下,自动触发rdb规则

  2. 执行flushall命令,也会触发rdb规则

  3. 退出redis(shut down 合理退出命令),也会产生rdb文件

备份就自动生成一个 dump.rdb 文件

恢复rdb文件:

  1. 只需将rdb文件放在redis启动目录就可以,redis启动的时候会自动检查dump.rdb 恢复其中的数据!

  2. 查看需要存放的位置:config get dir

优点:

  1. 适合大规模的数据恢复!(父进程不参与数据的保存恢复,而是fork子进程管理,效率高)

  2. 对数据完整性要求不高!(比如300s内更新了9次突然宕机了,那最后的数据没来得及保存就丢失了)

缺点:

  1. 需要一定的时间间隔进行操作!如果redis意外当即,最后一次修改数据就没

  2. fork进程的时候,会占用一定的资源!

 

二、AOF持久化

AOF(Append Only File):

以日志的形式将我们的所有命令都记录下来(写记录读不记录),秩序罪加文件不可更改文件,redis重启会去读该文件重新构建数据,换言之,把这个文件中指令全部再执行一遍。

配置文件中对其的相关配置:

1、保存在 appendonly.aof(默认不开启,开启需要手动配置)

2、持久化策略(默认每秒写一次)

3、重写规则

默认是文件的无限追加,文件会越来越大!

当文件大小超过64m,fork一个新的进程来讲我们的文件进行重写

 

恢复aof文件:

破坏/损坏 aof 文件后,无法启动redis(如果默认时aof模式下)

此时,可以用 redis-check-aof 来修复

 

优点:

  1. 每次修改都同步,文件的完整性会更好!

  2. 没秒同步一次,可能会丢失一秒的数据!

  3. 从不同步,效率最高的!

缺点:

  1. 相对于数据文件来说,aof远远大于rdb,修复的速度也比rdb慢!

  2. aof运行效率也要比rdb慢,所以redis默认配置是rdb!

性能建议:

因为RDB文件只用作后备用途,建议只在Slave上持久化RDB文件,而且只要15分钟备份一次就够 了。

如果Enable AOF ,好处是在最恶劣情况下也只会丢失不超过两秒数据,启动脚本较简单只load自己的 AOF文件就可以了,代价一是带来了持续的IO,二是AOF rewrite 的最后 将 rewrite过程中产生的新数据写到新文件造成的阻塞几乎是不可避免的。

只要硬盘许可,应该尽量减少AOF rewrite的频率,AOF重写的基础大小默认值64M太小了,可以设到5G以上,,默认超过原大小100%大小重写可以改到适当的数值。

如果不Enable AOF,仅靠 Master-Slave Repllcation 实现高可用性也可以,能省掉一大笔IO,也 减少了rewrite时带来的系统波动。代价是如果Master/Slave 同时挂了,会丢失十几分钟的数据, 启动脚本也要比较两个 Master/Slave 中的 RDB文件,载入较新的那个,微博就是这种架构。

 

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

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

相关文章

LeetCode 78. 子集(回溯)

文章目录1. 题目信息2. 解题2.1 暴力回溯2.2 循环2.3 位运算1. 题目信息 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。 说明:解集不能包含重复的子集。 示例:输入: nums [1,2,3] 输出: [[3],[1],[2…

EMNLP'20最佳论文揭晓!八块肌肉=能打电话?!

文 | 小轶(y)背景今天上午十点刚刚颁布的EMNLP 2020最佳论文,获奖者是来自UCBerkeley团队的这篇Digital Voicing of Silent Speech。刷了那么多NLP论文,各种pretraining、BERT、XXX-former...是不是都快刷出审美疲劳了?今年的EMNLP best pape…

空洞卷积相关理解

多标签文本分类:基于语义单元的空洞卷积:https://zhuanlan.zhihu.com/p/50231229?utm_sourceweibo 原文链接:https://www.jianshu.com/p/f743bd9041b3 扩展阅读:https://blog.csdn.net/c9Yv2cf9I06K2A9E/article/details/7982559…

2019 最全阿里天猫Java 3面真题,含面试题答案!

1 阿里天猫Java一面 自我介绍 jvm GC原理,JVM怎么回收内存 ConcurrentHashMap是怎么解决并发问题的? HashMap怎么从链表转换为红黑树?如果存入的是null键,放在桶的哪个位置? 谈谈Synchronized与ReentrantLock的区别…

NumPy快速入门--形状操作

文章目录1. 更改数组的形状2. 将不同数组堆叠在一起3. 将一个数组分成几个较小的数组1. 更改数组的形状 >>> import numpy as np >>> a np.floor(10*np.random.random((3,4))) >>> a array([[2., 2., 5., 6.],[2., 7., 4., 2.],[9., 3., 5., 8.]]…

深度学习语义分割理论与实战指南.pdf

深度学习语义分割理论与实战指南 V1.0 版本已经完成,主要包括语义分割概述、关键技术组件、数据模块、经典分割网络与架构、PyTorch基本实战方法等五个部分。获取方式:扫描关注下方公众号回复 语义分割 即可。图像分类、目标检测和图像分割是基于深度学习…

Jedis工具类

目录 一、基本使用 1、xml 引入依赖 2、简单测试 二、工具类 1、编写redis属性文件 2、编写工具类 3、使用测试 Jedis是Redis官方推荐的Java连接开发工具。 一、基本使用 1、xml 引入依赖 <dependencies><dependency><groupId>redis.clients</gr…

最新鲜的美团Java面试41题(三面技术+HR面):Redis+Kafka+分布式

Java一面 hashmap与concurrenthashmap的区别 垃圾回收算法以及垃圾回收器 CMS的回收步骤 G1和CMS的区别 CMS哪个阶段是并发的哪个阶段是串行的&#xff1f; G1内部是如何分区的&#xff08;region&#xff09; HashMap如何解决Hash冲突 my sql 索引类别 什么是覆盖索引…

今年阿里双十一提升广告点击率居然用的是这种算法?!

文 | 阿里巴巴定向广告团队源 | 知乎写在前面的碎碎念这篇文章主要是介绍我们在CTR建模领域最新的工作CAN&#xff0c;CAN已经在双十一前全面在阿里定向广告落地&#xff0c;在线效果提升非常显著。一般文章会以事后的视角来写&#xff0c;这样思考会更完整&#xff0c;会屏蔽掉…

Spring之AOP实现

文章目录前言环境搭建前置业务类编写一、注解实现AOP1.编写注解实现的增强类2.在Spring配置文件中&#xff0c;注册bean&#xff0c;并增加支持注解的配置3.测试二、配置文件实现AOP1.编写自定义增强类2.Spring配置文件中&#xff0c;注册bean&#xff0c;配置增强2.测试总结前…

LeetCode 90. 子集 II(回溯+剪枝)

文章目录1. 题目信息2. 解题2.1 循环2.2 回溯1. 题目信息 给定一个可能包含重复元素的整数数组 nums&#xff0c;返回该数组所有可能的子集&#xff08;幂集&#xff09;。 说明&#xff1a;解集不能包含重复的子集。 示例:输入: [1,2,2] 输出: [[2],[1],[1,2,2],[2,2],[1,2…

BAT研发Java面试36题总结:Spring+Redis+Docker+Dubbo

一面&#xff1a; ArrayList和linkedlist区别。ArrayList是否会越界。 ArrayList和hashset有何区别。hashset存的数是有序的么。 volatile和synchronized区别 多态的原理 数据库引擎Innodb和myisam区别 Redis的数据结构 Redis是基于内存的么 Redis的list zset的底层实现…

中文版GPT-2,可用于写小说、诗歌、新闻等

原文链接&#xff1a;https://www.sohu.com/a/336251713_610300 有人做出了中文版GPT-2&#xff0c;可用于写小说、诗歌、新闻等&#xff1b;15亿参数版GPT-2被两名研究生复现 2019-08-25 12:01 来源:量子位 </div>原标题&#xff1a;有人做出了中文版GPT-2&#xff0…

一份来自清华的数据分析笔记,请查收!

之前发过很多数据分析的文章&#xff0c;收到不少好评&#xff0c;但也有一些困惑&#xff1a;入门数据分析该学哪些知识点&#xff1f;该看哪些书&#xff1f;是从 Python入手还是 R 语言&#xff1f;常用的算法有哪些&#xff1f;练手做项目的数据库去哪里找&#xff1f;好用…

LeetCode 9. 回文数

文章目录1. 题目信息2. 解题1. 题目信息 判断一个整数是否是回文数。回文数是指正序&#xff08;从左向右&#xff09;和倒序&#xff08;从右向左&#xff09;读都是一样的整数。 示例 1:输入: 121 输出: true 示例 2:输入: -121 输出: false 解释: 从左向右读, 为 -121 。 …

Redis系列教程(四):Redis为什么是单线程、及高并发快的3大原因详解

Redis的高并发和快速原因 1.redis是基于内存的&#xff0c;内存的读写速度非常快&#xff1b; 2.redis是单线程的&#xff0c;省去了很多上下文切换线程的时间&#xff1b; 3.redis使用多路复用技术&#xff0c;可以处理并发的连接。非阻塞IO 内部实现采用epoll&#xff0c;采…

Bing与DuckDuckGo搜索结果惊人一致?Google展现强势差异

文 | 乐乐QvQ搜索引擎之间有何不同&#xff1f;随着世界上最大的两家公司Google和Microsoft争夺Web Search空间的愈发激烈&#xff0c;一超多强的搜索格局已经形成。在目前眼花缭乱的搜索市场中&#xff0c;是搜索结果的千篇一律&#xff0c;九九归一&#xff1b;还是搜索结果的…

图解gpt-2

原文链接&#xff1a;https://www.sohu.com/a/336262203_129720 完全图解GPT-2&#xff1a;看完这篇就够了&#xff08;一&#xff09; 2019-08-25 12:47 来源:机器之心Pro </div>原标题&#xff1a;完全图解GPT-2&#xff1a;看完这篇就够了&#xff08;一&#xff0…