redis缓存架构-02-两种持久化机制(RDB和AOF)
1.两种持久化机制的介绍
1.1 RDB
周期性的生成redis内存数据的一份完整的快照
1)根据配置的检查点,生产rdb快照文件,fork一个子线程,将数据dump到rdb快照文件中,完成rdb文件后,替换之前的旧的快照文件
2)配置方式,在redis.conf文件中配置save 60 1000(每隔60,如果有超过1000个key发送了变化,就生产一份新的dump.rdb文件)
3)save可以配置多个,就是多个检查点,只要符合就会进行rdb备份
4)也可以手动调用save或bgsave命令,同步或异步进行rdb备份
1.2 AOF(需要在redis.conf文件中开启aof持久化 appendonly yes)
对每一条写入命令作为日志,以append-only的模式写入到一个日志文件中,redis重启时可以通过回放AOF日志文件重新构建整个数据集。
1)写日志时,不直接写入到磁盘,而是先写入到os chache中,然后一定时间间隔(每一秒)调用一次操作系统的fsync操作,强制将os chache中的数据,刷入到磁盘文件中。
fsync可配置的策略:
appendfsync always #每写一条数据,就执行一次fsync,性能非常差
appendfsync everysec #每秒将os cache中的数据fsync到磁盘,生产环境一般这样配置
appendfsync no #仅将数据写入到os cache,redis自己时不时的会调用fsync,不受控制
2)AOF是存放每条写命令的,所以AOF文件会不断膨胀,当大到一定的时候,就会触发AOF 的rewrite操作
AOF rewrite操作:基于当前redis内存中的数据,重新构建一个更小的aof文件,然后将旧的aof文件删除
rewrite可配置的策略:
auto-aof-rewrite-percentage 100 #当rewrite增长到指定的比例是,进行aof rewrite
auto-aof-rewrite-min-size 64mb #aof rewrite时的最小文件大小,只有超过指定的大小才会就行rewrite
3)如果同时开启了RDB和AOF两种持久化机制,redis在重启时,会从aof文件中恢复数据
2.两种持久化机制优缺点的比较
2.1 RDB的有优点
1)每一个dump.rdb文件代表了某一时刻redis中的全部数据的快照,非常适合做冷备份
2)直接基于rdb文件重启和恢复redis数据,速度更快(rdb是基于数据文件进行恢复,aof是基于写指令进行回放)
3)rdb对redis对外提供读写服务影响小,可以让redis保持高性能(rdb每次写都是写入到内存中,一定时间后,fork出一个子进程进行磁盘IO操作;aof需要每次写文件,虽然是先写os cache,但也有一定的开销)
2.2 RDB的缺点
1)如果发生故障,数据丢失的可能比较多(每隔一段时间才会进行备份一次)
2)每次fork子进程进行io操作,如果数据文件特别大,会造成客户端提供的服务暂停数毫秒
2.3 AOF的优点
1)如果发生故障,数据丢失的比较少(每秒执行一次fsync,只会丢失一秒的数据)
2)aof日志文件以append-only模式写入,没有磁盘寻址的开销,写入性高,即使有文件破损,也可以很容易修复(redis-check-aof --fix 要修改的aof文件)
3)aof通过可读性的方式记录,适合灾难性的误删除的紧急恢复(直接删除aof中的该指令进行重启redis即可)
2.4 AOF的缺点
1)相同的数据,aof文件要不rdb文件大
2)aof开启后,QPS会降低(每秒会进行fsync操作)
3)数据恢复时,需要基于指令回放操作,恢复速度慢,容易出现bug
3.两种持久化机制的选择
同时开启两种持久化机制,用aof保证数据的不丢失,作为数据恢复的第一选择;用rdb进行冷备,在aof文件不可用是,作快速数据恢复。
4.开启两种持久化机制时的数据恢复
4.1 如果redis进程挂掉了,重启redis进程即可,基于aof进行恢复
4.2 如果redis所在的机器挂掉了,重启机器后,尝试重启redis进程,基于aof进行恢复,如果aof文件有破损,使用redis-check-aof fix进行修改
4.3 如果redis当前最新的aof和rdb文件都丢失或者损坏了
1)停止redis,删除appendonly.aof文件和dump.rdb文件
2)修改redis.conf文件,关闭appendonly no
3)从云端拷贝dump.rdb文件,重启redis进程
4)在redis命令行中,热修改配置开启aof,config set appendonly yes
5)停掉redis进程,修改redis.conf文件,开启aof,appendonly yes
6)重启redis
redis缓存架构-02-两种持久化机制(RDB和AOF)的更多相关文章
- Redis系列之----Redis的两种持久化机制(RDB和AOF)
Redis的两种持久化机制(RDB和AOF) 什么是持久化 Redis的数据是存储在内存中的,内存中的数据随着服务器的重启或者宕机便会不复存在,在生产环境,服务器宕机更是屡见不鲜,所以,我们希望 ...
- 详解Redis中两种持久化机制RDB和AOF(面试常问,工作常用)
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Ap ...
- 详解Redis中两种持久化机制RDB和AOF
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失.幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Ap ...
- redis两种持久化方式RDB和AOF
目录 前言 1. Redis 数据库结构 2. RDB 持久化 2.1. RDB 的创建和载入 2.1.1. 手动触发保存 SAVE 命令 BGSAVE 命令 SAVE 和 BGSAVE 的比较 2. ...
- 9. 图解分析Redis的RDB和AOF两种持久化机制的原理
1.RDB和AOF两种持久化机制的介绍 2.RDB持久化机制的优点3.RDB持久化机制的缺点4.AOF持久化机制的优点5.AOF持久化机制的缺点6.RDB和AOF到底该如何选择 我们已经知道对于一个企 ...
- 10.Redis的RDB和AOF两种持久化机制的优劣势对比
1.RDB和AOF两种持久化机制的介绍 2.RDB持久化机制的优点3.RDB持久化机制的缺点4.AOF持久化机制的优点5.AOF持久化机制的缺点6.RDB和AOF到底该如何选择 我们已经知道对于一个企 ...
- Redis学习一:Redis两种持久化机制
申明 本文章首发自本人公众号:壹枝花算不算浪漫,如若转载请标明来源! 感兴趣的小伙伴可关注个人公众号:壹枝花算不算浪漫 22.jpg 前言 Redis是基于内存来实现的NO SQL数据库,但是我么你都 ...
- redis的RDB和AOF两种持久化机制
思维导图:我的redis基础知识汇总 RDB持久化机制的优点 (1)RDB会生成多个数据文件,每个数据文件都代表了某一个时刻中redis的数据,这种多个数据文件的方式,非常适合做冷备,可以将这种完整的 ...
- 分析RedisRDB和AOF两种持久化机制的工作原理及优劣势
一.RDB和AOF两种持久化机制的介绍 RDB持久化机制,对redis中的数据执行周期性的持久化 AOF机制对每条写入命令作为日志,以append-only(追加)的模式写入一个日志文件中,在redi ...
随机推荐
- Windows程序设计--(四)文本输出
4.1 绘制和重绘 4.1.2 有效矩阵和无效矩阵 在擦除对话框之后,需要重画的被对话框遮住的矩形区域,这个区域称为「无效区域」或「更新区域」.正是显示区域内无效区域的存在,才会让Windows将一个 ...
- 一个神奇却很简单的css特效
在网上看到一个前端大牛的主页,觉得他有一个特效特别酷,一开始还以为是要用什么javascript代码来实现,但仔细看一下,发觉只是用几行css代码就搞定了,我觉得挺好的. 他这个效果就是鼠标放在左半部 ...
- VUE小案例--简易计算器
这个小案例主要时练习v-model的使用,功能并不完善 <!DOCTYPE html> <html lang="zh-CN"> <head> & ...
- 2018-2-13-C#-复制列表
title author date CreateTime categories C# 复制列表 lindexi 2018-2-13 17:23:3 +0800 2018-2-13 17:23:3 +0 ...
- css3 清除浮动
eg:三个div,父级div下面有两个div分别float:left和float:right <style> .container{width:400px;border:3px soild ...
- Go 数组(1)
1.一旦声明,数组里存储的数据类型和数组长度就都不能改变了.如果需要存储更多的元素, 就需要先创建一个更长的数组,再把原来数组里的值复制到新数组里. 例如: ]int 2.使用数组字面量声明数组 // ...
- MySQL查询执行路径
1.客户端发送一条查询给服务器2.服务器先检查查询缓存,如果命中缓存,则立刻返回存储在缓存中的结果.3.服务器端进行SQL解析.预处理,再由优化器生成对应的执行计划.4.MySQL根据优化器生成的执行 ...
- zoj3229 Shoot the Bullet (有源汇最大流)
题目大意:文文要给幻想乡的女♂孩子们拍照,一共n天,m个女♂孩子,每天文文至多拍D[i]张照片,每个女♂孩子总共要被文文至少拍G[i]次.在第i天,文文可以拍c[i]个女♂孩子,c[i]个女♂孩子中每 ...
- hdu 6146 Pokémon GO (计数)
Problem Description 众所周知,度度熊最近沉迷于 Pokémon GO. 今天它决定要抓住所有的精灵球!为了不让度度熊失望,精灵球已经被事先放置在一个2*N的格子上,每一个格子上都有 ...
- ckeditor实现WORD粘贴图片自动上传
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...