redis的两种持久化方式
1.为什么redis需要持久化
答:edis是基于内存的,如果Redis服务器挂了,数据就会丢失
2.有几种方式实现redis的持久化
答:有两种,一种是AOF 持久化,另一种是RDB持久化
一. AOF持久化
形式:采用日志的形式来记录每个写操作,追加到AOF文件的末尾
过程:执行完命令后才记录日志的
备注:Redis默认情况是不开启AOF的
问:为什么不先记录日志再执行命令呢?
答:因为Redis在向AOF记录日志时,不会先对这些命令进行语法检查,如果先记录日志再执行命令,日志中可能记录了错误的命令,Redis使用日志恢复数据时,可能会出错
问:会阻塞当前的写操作吗?
答:因为执行完命令后才记录日志,所以不会影响,但会存在两个风险:
更执行完命令还没记录日志时,宕机了会导致数据丢失
AOF不会阻塞当前命令,但是可能会阻塞下一个操作。
问:如何解决上述的两个风险
答:有三种写回策略
always,同步写回,每个子命令执行完,都立即将日志写回磁盘。
everysec,每个命令执行完,只是先把日志写到AOF内存缓冲区,每隔一秒同步到磁盘。
no:只是先把日志写到AOF内存缓冲区,有操作系统去决定何时写入磁盘。
问:如何选取上述三种写回策略?
答:always同步写回,可以基本保证数据不丢失,no策略则性能高但是数据可能会丢失,一般可以考虑折中选择everysec
问:如果接受的命令越来越多,AOF文件也会越来越大,文件过大还是会带来性能问题。日志文件过大怎么办呢?
答:会有一种AOF重写机制,随着时间推移,AOF文件会有一些冗余的命令如:无效命令、过期数据的命令等等,AOF重写机制就是把它们合并为一个命令(类似批处理命令),从而达到精简压缩空间的目的
问:AOF重写会阻塞吗
答:AOF日志是由主线程会写的,而重写则不一样,重写过程是由后台子进程bgrewriteaof完成
问:AOF的优缺点
答:优点:数据的一致性和完整性更高,秒级数据丢失。
缺点:相同的数据集,AOF文件体积大于RDB文件。数据恢复也比较慢。
二.RDB持久化
RDB,就是把内存数据以快照的形式保存到磁盘上。和AOF相比,它记录的是某一时刻的数据。它是Redis默认的持久化方式,RDB持久化,是指在指定的时间间隔内,执行指定次数的写操作,将内存中的数据集快照写入磁盘中,执行完操作后,在指定目录下会生成一个dump.rdb文件,Redis 重启的时候,通过加载dump.rdb文件来恢复数据
问:RDB触发机制有几种?
答:分为手动触发和自动触发,手动触发分为两种,第一种是同步的,输入save命令,会阻塞当前redis服务器,第二种是bgsave命令,是异步的,会fork一个子进程,然后该子进程会负责创建RDB文件,而服务器进程会继续处理命令请求,另一种是手动触发,如下图所示:

备注:虽然bgsave执行不会阻塞主线程,但是频繁执行全量快照也会带来性能开销。比如bgsave子进程需要通过fork操作从主线程创建出来,创建后不会阻塞主线程,但是创建过程是会阻塞主线程的。可以做增量快照处理
问:RDB的优缺点
答:优点:与AOF相比,恢复大数据集的时候会更快,它适合大规模的数据恢复场景,如备份,全量复制等
缺点:没办法做到实时持久化/秒级持久化
注意:Redis4.0开始支持RDB和AOF的混合持久化,就是内存快照以一定频率执行,两次快照之间,再使用AOF记录这期间的所有命令操作
3、如何选择RDB和AOF
答:1.如果数据不能丢失,RDB和AOF混用
2.如果只作为缓存使用,可以承受几分钟的数据丢失的话,可以只使用RDB。
3.如果只使用AOF,优先使用everysec的写回策略。
redis的两种持久化方式的更多相关文章
- Redis的两种持久化方式-快照持久化和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为"持久化"效 ...
- Redis的两种持久化方式-快照持久化(RDB)和AOF持久化
Redis为了内部数据的安全考虑,会把本身的数据以文件形式保存到硬盘中一份,在服务器重启之后会自动把硬盘的数据恢复到内存(redis)的里边,数据保存到硬盘的过程就称为“持久化”效果. redis有两 ...
- Redis的两种持久化方式详细介绍
一,Redis是一款基于内存的数据库,可以持久化,在企业中常用于缓存,相信大家都比较熟悉Redis了,下面主要分享下关于Redis持久化的两种模式 1.半持久化模式(RDB,filesnapshott ...
- [转载] redis 的两种持久化方式及原理
转载自http://www.m690.com/archives/371 Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串 ...
- 探究Redis两种持久化方式下的数据恢复
对长期奋战在一线的后端开发人员来说,都知道redis有两种持久化方式RDB和AOF,虽说大家都知道这两种方式大概运作方式,但想必有实操的人不会太多. 这里是自己实操两种持久化方式的一点点记录. 先看以 ...
- Redis两种持久化方式(RDB&AOF)
爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...
- Redis系列之----Redis的两种持久化机制(RDB和AOF)
Redis的两种持久化机制(RDB和AOF) 什么是持久化 Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望 ...
- redis++:Redis的两种持久化 RDB 和 AOF
Redis持久化备份数据的方式有两种:RDB(Redis DataBase) . AOF(Append Only File). RDB 什么是RDB: 在指定时间间隔内,将内存中的数据集快照写入磁盘 ...
- Redis的两种持久化机制
Redis的两种持久化机制 1.持久化机制 client--->redis(内存)--->内存数据-数据持久化--->磁盘 两种方法 快照(Snapshot) AOF(Append ...
- redis两种持久化方式的优缺点
redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 AOF持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集,AOF文件中全部以 ...
随机推荐
- springboot自动配置原理以及spring.factories文件的作用详解
一.springboot 自动配置原理 先说说我们自己的应用程序中Bean加入容器的办法: package com.ynunicom.dc.dingdingcontractapp; import co ...
- 01、SECS的基本概念
最近做的项目跟半导体设备相关,需要学习SECS相关的内容,把自己的学习记录分享出来,如有不足甚至错误的地方,请不吝赐教,十分感谢! 文章内容基本都是SECS协议的内容和参考的资料,只不过是加了自己的理 ...
- [Node] nvm 安装 node 和 npm
Node JS 安装 安装 node version manager (nvm) Windows: https://github.com/coreybutler/nvm-windows/release ...
- 【Azure 应用程序见解】通过无代码方式在App Service中启用Application Insights后,如何修改在Application Insights中显示的App Service实例名呢?
问题描述 在App Service中,可以非常容易的启动Application Insights服务.默认情况中,在Application Insights中查看信息时候,其中的对象名称默认为App ...
- 用linux命令cd 查找想要找的文件
如果想找文件Computer下的bin文件,在终端输入绝对路径 cd /bin,不能输入 cd /Computer/bin,因为文件目录不对 文件目录可以在文件的终端看到,/bin就是正确的目录 比如 ...
- linux centos文本编辑模式快速进入末尾最后一行快捷键与跳转首行、行尾和某一行快捷键
前言 使用vim的过程中想要快速移动光标至行首.行尾.第一行.最后一行或者某一行,本文对此简单介绍. 具体操作 1.快速至当前行的行首:home键最简单 (1) Home键: (2) 符号^(要按sh ...
- CYQ.Data 支持 DaMeng 达梦数据库
DaMeng 达梦数据库介绍: 达梦数据库(DMDB)是中国自主研发的关系型数据库管理系统,由达梦科技股份有限公司开发. 达梦数据库提供了企业级的数据库解决方案,广泛应用于金融.电信.政府.制造等行业 ...
- set中的erase使用的一个错误
如果在遍历set的时候去erase很容易出事 事故代码: multiset<int>a; for(auto it=a.begin();it!=a.end();it++){ a.erase( ...
- 网关接口映射项目 前端 nestjs 项目名称 tf-gateway-http-proxy 改Nginx了
需求 前端 需要连接后台地址,每次换别人联调都要修改,好几个项目的时候,就要改好几个 关键每次git提交 还会显示文件修改了 强迫症患者 表示 忍不了 群里有人给了个脚本 有时间可以替换nginx h ...
- baidu 突然打不开了 20210621
换了个dns 123.125.81.6 114.114.114.114