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支持两种 ...
随机推荐
- js将接口返回的数据序列化
<div style={{marginLeft: '80px'}}> <pre> {th ...
- selenium(七)expected_conditions EC
判断一个元素是否存在,如何判断alert弹窗出来了,如何判断动态的元素等等一系列的判断,在selenium的expected_conditions模块收集了一系列的场景判断方法, 一.功能介绍和翻译 ...
- springboot学习章节代码-spring基础
1.DI package com.zhen.highlights_spring4.ch1.di; import org.springframework.stereotype.Service; /** ...
- 3-D crustal model transfer to cdl format
The downloaded crustal model file, for example, its name is TW-PS-H14.nc The command is ncdump -b c ...
- Office 365 企业应用以及服务概览 分享记录
博客地址:http://blog.csdn.net/FoxDave 分享时间: 2017年9月14日 分享地点: 部门内部 参与人数: 16人 分享内容: 讲解微软MVP项目计划的相关内容:讲解O ...
- Linux 配置selenium + webdriver 环境
1.ubuntu 自带了python, 可以打开终端输入python 回车后如果显示版本信息就说明已经安装 2.安装安装python setup tools apt-get install pytho ...
- TransactionScop事务机制的使用
如果在C#中使用TransactionScope类(分布式事务),则须注意如下事项:1.在项目中引用using System.Transactions命名空间(先要在添加net组件的引用); 2.具体 ...
- YLZ开发后端外网编写
如何取得前端的值并做处理 // 调用ESB来获取Ajaxpagerespon获得审核记录 @RequestMapping(value = "/queryBydwId", metho ...
- localStorage的使用记录
// 存数据 var str = JSON.stringify(back); localStorage.setItem("options", str); // 取数据 var op ...
- win10---cmd终端下连接ubantu--SSH SERVER服务
在win10 cmd终端下输入 SSH ubantu@192.168.124.134 之后输入yes 在输入yes