Redis(二)持久化
Redis持久化,分为RDB方式和AOF方式,它们可以单独使用,也可以混用。Redis默认的是使用RDB方式。
一、RDB方式
1.触发快照的方式
RDB方式是在指定时间间隔内某一时间点的数据集快照。以下几种情况会触发快照。
(1)根据配置规则,进行自动快照。
看配置文件:

86-88行,这三行就是配置文件中默认设置的规则。通过看文档中的注释就可以理解其中含义,在规定时间内,发生一定次数的变化,就会进行快照。三种情况任意一种满足,都会进行快照。

在97行和107行,是快照的保存路径和文件名称,当然,可以也可以自己指定。
(2)执行SAVE,BGSAVE命令
save命令:Redis同步进行快照操作,期间会阻塞所有客户端的请求,当数据库数据较多时,应避免使用这个命令。
bgsave命令:从名字可以猜测到,这个命令是在后台异步进行,并且同时可以处理客户端的请求。
(3)执行复制(replication)
当设置了主从模式时,在复制初始化时自动进行快照。
2.RDB持久化过程
(1)Redis使用fork()函数,复制一份当前进程的副本;
(2)父进程继续处理客户端的请求,子进程开始将内存中的数据写入硬盘中的临时文件;
(3)当子进程写完所有数据后,用临时文件,替换旧的数据文件,至此,一次快照完成。
注意:fork()函数操作时,那一刻的数据,将会被存储,fork()之后快照完成前,那一时间的数据将会丢失。
二、AOF方式
1.AOF使用
Redis存储非临时的数据时,一般要打开AOF来降低进程终止导致的数据丢失。它可以将每条命令记录下来,写进AOF文件里。

默认AOF是关闭的,将262行的 no变成yes,就可以了。默认的文件名见265行。
2.AOF文件重写
重写意思是,删除文件中无用的行为。比如set name lee 分别将不同的值进行设置,但是前面设置的值肯定被覆盖,只有最后一次设置的值有效。
配置文件中对重写功能的设置:

最后两行的设置。328行,如果新文件大小比原文件大100%时,进行重写。最后一行,文件大小必须达到64mb时,才会重写。
两个关系必须同时满足,才可以重写。
三、RDF与AOF的比较
这里推荐一篇博客了,有兴趣的朋友可以看看。
https://my.oschina.net/davehe/blog/174662
Redis(二)持久化的更多相关文章
- Redis(二)、Redis持久化RDB和AOF
一.Redis两种持久化方式 对Redis而言,其数据是保存在内存中的,一旦机器宕机,内存中的数据会丢失,因此需要将数据异步持久化到硬盘中保存.这样,即使机器宕机,数据能从硬盘中恢复. 常见的数据持久 ...
- redis + 主从 + 持久化 + 分片 + 集群 + spring集成
Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...
- Redis学习笔记(5)——Redis数据持久化
出处http://www.cnblogs.com/xiaoxi/p/7065328.html 一.概述 Redis的强大性能很大程度上都是因为所有数据都是存储在内存中的,然而当Redis重启后,所有存 ...
- 【Redis】持久化
Redis提供了为持久化提供了两种方法:第一种是快照:他可以将存在某一时刻的所有数据都写入硬盘里面.第二种是只追加文件(AOF):它会在执行命令时,将被执行的写命令复制到硬盘里面. Redis支持持久 ...
- Redis 之持久化
目录 一.前言 二.持久化类型之 RDB 三.持节化类型之AOF 四.Redis 持久化类型的抉择 五.持久化的恢复 六.持久化问题的分析定位与优化 七.回顾总结 一.前言 首先,来回顾下前面文章的知 ...
- redis的持久化相关操纵
一.redis数据持久化(数据保存在硬盘上) 1. 关系型数据库Mmysql持久化 任何增删改语句都是在硬盘上操作(安全) 断电,硬盘上数据还在 2.非关系型数据库 默认所有的增删改都是在内存中操作( ...
- redis(5)持久化
一.持久化 计算机的数据有两种状态: 1)持久态:如硬盘上的数据 2)瞬时态:如内存当中的数据 持久化就是将瞬时数据转换为持久数据的一个过程,但注意持久化并不意味的数据永远存在,针对不同的持久化,数据 ...
- Redis(五):Redis的持久化
Redis的持久化目录导航: 总体介绍 RDB(Redis DataBase) AOF(Append Only File) 总结(Which one) 总体介绍 官网介绍 RDB(Redis Data ...
- redis的持久化(RDB&AOF的区别)
RDB 是什么? 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. Redis会单独创建(fork)一个子进程来进行持久化,会 ...
- Redis学习笔记(5)—— Redis的持久化方案&Redis的集群搭建
一.Redis的持久化方案 Redis的高性能是由于其将所有数据都存储在了内存中,为了使Redis在重启之后仍能保证数据不丢失,需要将数据从内存中同步到硬盘中,这一过程就是持久化. Redis支持两种 ...
随机推荐
- Win10系列:JavaScript综合实例1
上面几个小节讲解了使用HTML5和JavaScript语言开发Windows 应用商店应用时会用到的一些技术,本小节将前面介绍的知识融合在一起创建一个菜谱应用程序,帮助读者更进一步地理解和掌握这些知识 ...
- python2和python3的区别总结
python2x和python3x区别: python2x:源码重复,不规范. python3x: 源码规范,优美,清晰,简单. 编译型:将代码一次性全部转化成字节码. 代表语言:C,C++ 优点: ...
- .net core 之Hangfire任务调度
Hangfire可用作任务调度,类似延迟任务.队列任务.批量任务和定时任务等. 一.nuget Hangfire包 找到Hangfire.AspNetCore和Hangfire.SqlServer包, ...
- python常用内建模块 collections,bs64,struct,hashlib,itertools,contextlib,xml
# 2 collections 是Python内建的一个集合模块,提供了许多有用的集合类. # 2.1 namedtuple #tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: p ...
- SQL-7查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t (group 与count)
题目描述 查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数tCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int ...
- 1080 MOOC期终成绩
对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分( ...
- jdk1.8使用的url和driverName的改变
#dataSource configure connection.url=jdbc:mysql://localhost:3306/shiro?useSSL=false&serverTimezo ...
- 201621123001 《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 字节流以字节为基本处理单位,字符流以字符为基本处理单位,以Reader和Writer为基础派生出的一系列类 字 ...
- go语言基础学习
go基础学习,面向对象-方法在Go语言中,可以给任意自定义类型(包括内置类型,但不包括指针类型)添加相应的方法 使用= 和:=的区别: // = 使用必须使用先var声明例如: var a a=100 ...
- r-mq实现顺序消费,不重复消费
根据订单号,同一订单号的消息,会被发送到同一个topic下的同一个queue,发送端的有序,会导致topic中消息的有序,而consumer和queue是一对多?的关系.可以保证topic中的有顺序的 ...