-
2020-02-10 10:55:13
Redis 提供两种持久化机制: RDB 和 AOF
RDBRedis DataBase:
指用数据集快照的方式半持久化模式,记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件,持久化结束后,用这个临时文件替换上次持久化的文件,可恢复数据
优点:
- 只有一个文件 dump.rdb,恢复操作简单,容灾性好
- 性能较高,fork 子进程进行写操作,主进程继续处理命令
- 大数据集比 AOF 的恢复效率高
缺点:
- 数据安全性低,RDB 是每间隔一段时间进行持久化,若期间 redis 发生故障,可能会发生数据丢失
AOFAppend-only file
指所有的命令行记录以 redis 命令请求协议的格式完全持久化存储,保存为 aof 文件
优点:
- 数据安全,aof 持久化可以配置 appendfsync 属性为 always,记录每个命令操作到 aof 文件中一次;通过 append 模式写文件,即使中途服务器宕机,也可以通过 redis-check-aof 工具解决数据一致性问题
- AOF 机制的 rewrite 模式,AOF 文件没被 rewrite 之前可以进行处理,如删除文件中的 flushall 命令
缺点:
- AOF 的持久化文件比 RDB 大,恢复速度慢
【Java面试题与答案】整理推荐
更多相关内容 -
Redis持久化机制
2021-03-29 23:30:10支持数据的持久化,支持 RDB 和 AOF 两种持久化方式 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离 支持丰富的数据结构,支持 String,List,Set,Zset(有序集合),Hash 五种数据结构 缺点 Redis 不...目录
Redis
的优点和缺点优点
- 读写性能优异
- 支持数据的持久化,支持
RDB
和AOF
两种持久化方式 - 支持主从复制,主机会自动将数据同步到从机,可以进行读写分离
- 支持丰富的数据结构,支持
String,List,Set,Zset(有序集合),Hash
五种数据结构
缺点
Redis
不具备自动容错和恢复功能。主机,从机的宕机都会导致读写请求失败,需要等待机器重启才能恢复- 主机宕机,宕机前有部分数据未能及时同步到从机,切换
IP
后还会引入数据不一致的问题,降低了系统的可用性
Redis
持久化机制持久化数据:也就是将内存中的数据写入到硬盘里面,大部分原因是为了之后重用数据(比如重启机器、机器故障之后恢复数据),或者是为了防止系统故障而将数据备份到一个远程位置。
Redis
的持久化方式:RDB
和AOF
RDB
快照持久化Redis
可以通过创建快照来获得存储在内存里面的数据。创建快照之后,可以对快照进行备份,可以将快照复制到其他服务器从而创建具有相同数据的服务器副本(Redis
主从结构,主要用来提高Redis
性能),还可以将快照留在原地以便重启服务器的时候使用RDB
快照持久化方式快照持久化是
Redis
默认采用的持久化方式,在redis.conf
配置文件中默认有此下配置# 在 900 秒(15分钟)之后,如果至少有 1 个 key 发生变化,Redis 就会自动触发 BGSAVE 命令创建快照 save 900 1 # 在 300 秒(5分钟)之后,如果至少有 10 个 key 发生变化,Redis 就会自动触发 BGSAVE 命令创建快照 save 300 10 # 在 60 秒(1分钟)之后,如果至少有 10000 个 key 发生变化,Redis 就会自动触发 BGSAVE命令创建快照 save 60 10000
RDB
快照持久化优点RDB
是一个非常紧凑的文件,它保存了某个时间点的数据集,非常适用于数据集的备份,比如你可以在每个小时保存一下过去24
小时内的数据,同时每天保存过去30
天的数据,这样即使出了问题你也可以根据需求恢复到不同版本的数据集RDB
是一个紧凑的单一文件,很方便传送到另一个远端数据中心或者亚马逊的S3
(可能加密),非常适用于灾难恢复- 与
AOF
相比,在恢复大的数据集的时候,RDB
方式会更快一些
RDB
快照持久化缺点- 耗时、耗性能
- 不可控、丢失数据
AOF
持久化与快照
RDB
持久化相比,AOF
持久化的实时性更好,因此已成为主流的持久化方案默认情况下
Redis
没有开启AOF
方式的持久化,可以通过appendonly
参数开启# 开启 AOF 持久化 appendonly yes
开启
AOF
持久化后每执行一条会更改Redis
中的数据的命令,Redis
就会将该命令写入硬盘中的AOF
文件。AOF
文件的保存位置和RDB
文件的位置相同,都是通过dir
参数设置的,默认的文件名是appendonly.aof
AOF
的运行原理-创建AOF
的运行原理-恢复AOF
快照持久化方式在
Redis
的配置文件中存在三种不同的AOF
持久化方式,它们分别是# 每次有数据修改发生时都会写入 AOF 文件,速度缓慢但是最安全 appendfsync always # 每秒钟同步一次,显示地将多个写命令同步到硬盘。AOF 默认使用的 appendfsync everysec # 让操作系统决定何时进行同步,速度最快 appendfsync no
为了兼顾数据和写入性能,用户可以考虑
appendfsync everysec
选项(AOF
默认使用) ,让Redis
每秒同步一次AOF
文件,Redis
性能几乎没受到任何影响。而且这样即使出现系统崩溃,用户最多只会丢失一秒之内产生的数据。当硬盘忙于执行写入操作的时候,Redis
还会优雅的放慢自己的速度以便适应硬盘的最大写入速度RDB
与AOF
的对比选择- RDB AOF 启动优先级 低 高 文件大小 小 大 恢复速度 快 慢 数据安全性 丢数据 根据策略决定 -
Redis学习笔记—Redis持久化机制
2021-01-07 05:56:071. Redis使用的持久化机制(存储数据的方式) (1)RDB 1) RDB:是redis的默认持久化机制。 RDB相当于照快照,保存的是一种状态。如果你有几十G数据 ,它能把它压缩为 几KB的快照 2)快照是默认的持久化方式,这种方式... -
redis持久化机制及原理
2021-12-08 23:05:40redis持久化机制 redis提供了两种持久化机制: 快照(snapshot):保存某一时刻的数据状态 AOF(appen only file):将写命令记录到日志文件中 快照 默认的持久化机制 保存以.rdb结尾的文件,于是也被称为RDB方式...redis持久化机制
redis提供了两种持久化机制:
- 快照(snapshot):保存某一时刻的数据状态
- AOF(appen only file):将写命令记录到日志文件中
快照
- 默认的持久化机制
- 保存以
.rdb
结尾的文件,于是也被称为RDB方式
快照生成方式
-
客户端执行BGSAVE、SAVE指令
-
服务器配置自动触发
900 1
300 10
60 10000
BGSAVE
当接收到客户端的BGSAVE指令后,redis会调用fork来创建一个子进程,然后子进程负责将快照写入磁盘中,而父进程则继续处理命令请求。
fork:当一个进程创建子进程的时候,底层操作系统会创建该进程的一个副本。在类UNIX系统中,创建子进程的操作会被优化:刚开始的时候,父子进程共享同一份内存,只有在父或子进程对内存进行了写操作后,共享才会结束
SAVE
整个进程都会进行创建快照的操作,在创建快照完成之前redis处于阻塞状态
AOF
- 开启AOF持久化,修改
appendonly yes
- 修改
appendfilename "appendonly.aof"
指定生成文件名称
日志追加频率
always 【谨慎使用】
- 每个redis写命令都同步到硬盘。
- 如果同一时间内大量涌入写命令,会引发严重的写入放大问题(向硬盘写入大量小文件导致硬盘寿命缩减等问题)
everysec 【推荐】
- 每秒执行一次同步。最多只会丢失1秒内的数据
no 【不推荐】
- 由操作系统决定何时同步。看命,如果一次性堆积大量写操作然后同步,也会导致redis处于阻塞状态
set a 100
执行一万次,即使最终的结果只有一条,但是aof文件中却会保存所有指令。所以日久天长,aof文件可能越来越大,所以就有了AOF重写AOF重写
-
客户端方式触发重写
执行
BGREWRITEAOF
命令 不会阻塞redis服务 -
服务器配置方式自动触发
修改redis.conf中的两个选项:
-
auto-aof-rewrite-percentage 100
-
auto-aof-rewrite-min-size 64mb
如果这么设置,当启用了AOF持久化时,当AOF文件体积>64MB,且上一次重写之后体积增加了100%时,就自动重写一次
如果重写过于频繁,则可以将
auto-aof-rewrite-percentage
设置大一些 -
AOF重写原理
AOF重写,并没有读取旧有的aof文件,而是将整个内存中的数据库用命令的方式写成一个新的aof文件,用来替换就有的aof文件。
重写流程:
1、redis调用fork,产生子进程,子进程生成快照,将快照中的数据信息以写入命令的方式存入临时文件
2、父进程继续处理来自客户端的请求,并将这些请求中所有写命令存入旧aof中的同时,再存入一份到缓存中
3、子进程将快照中的内容以命令形式全部写入临时文件后,通知父进程,然后父进程将刚才缓存的新命令追加到临时文件
4、父进程将临时文件替换旧有的aof文件。后面收到的命令也开始向新的aof文件中追加
-
Redis持久化机制-浅入
2021-01-07 12:00:00Redis持久化就是将数据存入磁盘,以保证数据在redis在崩溃时减小对数据的影响,redis提供两种持久化方式。 1.快照(snapshotting)方式RDB,RDB是redis默认的持久化方式,可以再redis.conf中配置其存储频度,如图: ... -
【redis持久化机制】
2022-04-05 13:13:42redis持久化模式redis持久化机制的原理
一、两种实现redis持久化的机制,RDB模式和AOF模式
①RDB模式
1.有三种具体的实现方式,save,bgsave,修改redis.conf配置 2.save方式会占用redis的进程,在save期间redis不可以处理其他的命令会造成redis拥堵,会替换掉老的dump.rdb文件 3.bgsave会fork出redis的一个子进程,在后台异步进行快照操作,并不会造成redis的拥堵,会替换掉老的dump.rdb文件 4.自动同步,即修改redis.conf中的配置数据 eg:save:这里是用来配置触发 Redis的 RDB 持久化条件,也就是什么时候将内存中的数据保存到硬盘。比如“save m n”。表示m秒内数据集存在n次修改时,自动触发bgsave。
#####②AOF模式
1.将redis的写命令记录在AOF的文件中 2.AOF有三种机制 2.1 always:当redis数据发生变化时即同步 2.2 everysec : 每秒钟同步,无论数据有无更改 2.3 no:从不同步
RDB和AOF的优缺点
1.RDB优点:适合大数据集的回复,fork子进程不会造成进程拥堵
2.RDB缺点:RDB快照是一次全量备份,存储的是内存数据的二进制序列化形式,存储上非常紧凑。当进行快照持久化时,会开启一个子进程专门负责快照持久化,子进程会拥有父进程的内存数据,父进程修改内存子进程不会反应出来,所以在快照持久化期间修改的数据不会被保存,可能丢失数据
3.AOF优点:AOF每隔一秒同步一次数据,最多只会丢失1s钟的数据
4.AOF缺点:aof文件要比rdb文件要大###RDB和AOF如何选择
一起来学习Golang吧
-
Redis持久化机制之RDB
2022-02-15 19:20:16Redis的持久化机制有两种:RDB持久化和AOF持久化。因为Redis是一个内存数据库,如果没有合适的持久化机制,那么一旦服务器进程退出,服务器中的数据库状态也会消失。本章介绍RDB持久化机制。 RDB持久化 RDB持久化,... -
Redis持久化机制——RDB和AOF讲解和使用
2022-02-12 10:57:10概述 Redis是内存数据库,如果不将...Redis会单独创建( fork )一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行 -
redis持久化机制
2022-04-04 14:29:341:为什么做redis持久化机制 redis 的数据是存在内存中的,服务宕机后,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制。 2:redis持久化机制是什么... -
redis持久化机制-RDB-AOF-混合持久化
2021-01-06 21:00:28RDB方式的持久化 将redis内存直接把snapshot保存到文件系统。将整个内存数据存放到dump.rdb file 中。配置如下: [allen@localhost src]$ cd redis-5.0.3 [allen@localhost redis-5.0.3]$ vi redis.conf 配置... -
Redis持久化机制及缓存失效解决方案
2021-10-19 08:50:29本篇文章继续学习redis框架应对缓存失效,以及持久化机制及内存管理出现的问题,以及提供的解决方案及思想。 概述 在redis中缓存失效的原因主要是重启导致数据失效, 解决方案 RDB、AOF持久化机制。以及aof中为... -
Redis系列之Redis持久化机制
2021-12-23 13:15:22Redis持久化机制 为什么要持久化 如果Redis再次访问时,发现Redis的数据是空的,就会形成缓存穿透。更重要的是,因为Redis的数据是空的,所以客户端想要访问的key都没有,就会造成大量的请求就会瞬间打到数据库上... -
Redis持久化机制(RDB,AOF,混合持久化)
2022-02-28 22:06:30Redis持久化机制,RDB,AOF,混合持久化 -
进阶Redis系列(十一):超全详解Redis持久化机制AOF(代码示例)【面试必问/工作常用】
2020-11-06 11:33:01工作常用,面试必问的Redis持久化机制AOF -
面试题:Redis持久化机制
2021-12-09 14:51:481.RDB 2.AOF -
【面试常问】Redis的持久化机制是什么?各自的优缺点?
2022-01-31 13:26:56Redis在我们日常开发中是必不可少的,但是有可能会造成数据的丢失,因此就有了持久化机制,而 Redis的持久化机制也是面试中的高频问题,决定整理一下;如有错误还请个位指正! -
redis有几种持久化机制?
2021-08-22 05:29:51这就是今日总结的Redis持久化机制。 何为持久化? 正常redis数据是保存在内存中的,若遇到redis宕机或者需要重启等场景,数据就会丢失,所以需要将数据存储,将数据备份到磁盘的过程就叫做redis持久化。 redis安装... -
Redis的持久化机制
2020-09-28 14:21:09Redis提供两种持久化机制,一种RDB持久化(默认) 另一种是AOF(append only file)持久化。 RDB是什么? 原理是redis会单独创建(fork)一个与当前进程一模一样的子进程来进行持久化,这个子进程的所有数据... -
缓存-redis持久化机制(RDB和AOF)
2021-07-17 11:32:18文章目录前言一、Redis中RDB和AOF两种持久化机制概要介绍二、RDB(Redis DataBase)机制详解1.手动触发-save2.手动触发-bgsave3.自动触发-bgsave4.RDB 的优点5.RDB 的缺点三、AOF(Append Only File)机制详解1.持久化... -
Redis持久化机制RDB 和AOF
2019-08-11 16:27:16redis持久化机制 redis服务器宕机,内存数据是会丢失了,为了保证数据不丢失需要对数据做备份,所备份就是持久化 RDB 和AOF RDB(默认使用):做当前内存数据的全本快照,将数据以二进制形式存储在硬盘上 RDB就是将... -
一文读懂Redis持久化机制
2021-11-07 18:25:44一文读懂Redis持久化机制 我们日常开发中,使用Redis的最普遍场景就是用作缓存。也就是把后端数据库的数据存储在内存中,然后从内存读取数据,响应速度非常的快。并且还会降低数据库的访问压力。但是这里也有一个... -
redis持久化配置
2022-03-01 18:03:05redis有两种持久化方式:RDB和AOF。 RDB配置方式 默认情况下,是快照RDB的持久化方式,将内存中的数据以快照的方式写入二进制文件中,默认的文件名是dump.rdb redis.conf默认配置: save 900 1 save 300 10 save ... -
Redis持久化机制原理&如何实现
2020-08-22 12:12:53Redis 持久化机制 概念: 通过持久化机制(RDB、AOF)把内存中的数据同步到硬盘中来保证数据持久化;当 redis 重启后把硬盘文件重新加载到内存,就能达到恢复数据的目的。 实现: 单独创建fork的一个子进程,将父... -
Redis持久化机制RDB与AOF
2022-03-23 22:30:14Redis持久化机制AOF,RDB(默认)。 1.RDB RDB他的本质上是全量同步。下面我们看一下RDB同步方案的图解 在redis中一共有两个进程一个是主进程它是专门监听我们redis请求的,另一个是fork子进程专门处理RDB数据同步的... -
Redis持久化面试题
2021-11-16 18:28:52Redis持久化面试题1.redis中有哪些持久化方式?2.RDB的工作原理3.RDB触发机制4.RDB持久化的缺点5.AOF的工作原理6.开启AOF7.AOF触发机制8.RDB和AOF的优缺点9.RDB和AOF的优先级 1.redis中有哪些持久化方式? redis... -
Redis 持久化机制
2022-04-04 18:20:06Redis 持久化机制 1.RDB Redis 的RDB 是把内存数据全量持久化到硬盘; 非阻塞的RDB :Redis 在持久化的过程中还是对外服务的,也就是说他的持久化过程是非阻塞的,下面就是讨论其内部是如何实现的;fork 出一个子... -
小记一手 【Redis持久化机制】
2022-03-14 00:45:40Redis持久化机制·(建议收藏)