redis数据持久化之RDB和AOF
前言
redis虽然是内存缓存程序,但是可以将内存中的数据保存到硬盘上,从而实现数据保存。目前有两种redis数据持久化方式,分别是RDB和AOF。
RDB模式
RDB之简介
RDB(redis database),redis每隔一段时间对当前数据生成一个“快照”,默认只保留最新的一份快照,默认快照文件名为“dump.rdb”。redis.conf的配置如下:
# 900秒内,如果超过1个key被修改,则发起快照保存
save 900 1
# 300秒内,如果超过10个key被修改,则发起快照保存
save 300 10
# 60秒内,如果超过10000个key被修改,则发起快照保存
save 60 10000
RDB之优缺点
- 优点
- RDB基于时间点保存数据,可以通过脚本自定义时间点备份并保留多个备份,当出现问题时可以恢复到不同时间点的版本。
- 大数据量时恢复较快
- 缺点:
- 实时性不高,一旦发生故障,可能会丢失好几分钟的数据。
- 数据量很大时,备份时间较长。
AOF模式
AOF之简介
AOF(Append Only File),redis将所有对数据库进行写入的命令(及其参数)记录到AOF文件(默认文件appendonly.aof)中。redis.conf配置如下:
appendfsync yes
# 每次有数据修改时都会写入AOF文件
appendfsync always
# 每秒同步一次。aof默认策略
appendfsync everysec
appendfsync的三个可选值:
- everysec:每秒写回,每个写命令成功执行完,吸纳吧日志写到AOF文件的内存缓冲区,每隔一秒把缓冲区的内容写入磁盘。优点:基本不丢数据。缺点:影响主线程性能。
- always:同步写回,每个写命令成功执行完,立马将日志同步写入磁盘。
- no:操作系统控制的写回,每个写命令成功执行完,只是先把日志写到AOF的内存缓冲区,由操作系统决定何时将缓冲区内容写回磁盘。优点:性能好。缺点:落盘时机不受redis控制,宕机时损失数据可能很多。
AOF重写机制
为了避免AOF文件多大,redis根据数据库现状创建一个新的AOF文件。旧日志中的多条重复命令被合并为一条命令。AOF重写时会fork一个子进程bgrewriteaof
来处理(fork的一瞬间会阻塞主线程),避免对主线程造成过多的影响。
AOF之优缺点
- 优点:
- 实时性更强,即便故障,按照默认的fsync策略,也只会丢失1秒的数据。
- 缺点:
- 相较于RDB模式,更占用硬盘存储空间。而且由于记录的是操作命令,故障恢复时需要逐一执;如果操作日志很多,恢复就很缓慢。
补充
- redis4.0中提出了一个混合使用AOF和RDB的方法。简单来说,RDB以一定频率执行,两次RDB之间执行AOF。这样一来,RDB不需要频繁执行,AOF也只用记录两次RDB之间的操作。设置参数为:
aof-use-rdb-preamble yes
redis数据持久化之RDB和AOF的更多相关文章
- Redis数据持久化(RDB、AOF)
1. 简介 Redis作为内存型数据库,数据都保存在内存中,如果重启或意外宕机后,数据会全部丢失.因此,Redis提供了完善的持久化机制,将内存中的数据持久化到磁盘上,避免了完整性和安全性的问题, ...
- Redis:持久化之RDB和AOF
Redis:持久化之RDB和AOF RDB(Redis DataBase) 在指定的时间间隔内将内存中的数据集快照写入硬盘 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. R ...
- 分布式缓存Redis的持久化方式RDB和AOF
一.前言 Redis支持两种方式的持久化,RDB和AOF.RDB会根据指定的规则“定时”将内存中的数据存储到硬盘上,AOF会在每次执行命令后将命令本身记录下来.两种持久化方式可以单独使用其中一种,但更 ...
- redis的持久化方式RDB和AOF的区别
1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能, ...
- 11、Redis的持久化(RDB、AOF)
写在前面的话:读书破万卷,编码如有神 --------------------------------------------------------------------------------- ...
- NoSql数据库Redis系列(3)——Redis数据持久化(RDB)
大家都知道 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库 ...
- Redis系列(三):Redis的持久化机制(RDB、AOF)
本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF. 本系列的前2篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. Redis系列(二): ...
- 详细分析Redis的持久化操作——RDB与AOF
一.前言 由于疫情的原因,学校还没有开学,这也就让我有了很多的时间.趁着时间比较多,我终于可以开始学习那些之前一直想学的技术了.最近这几天开始学习Redis,买了本<Redis实战>, ...
- redis的持久化(RDB与AOF)
1.为什么redis要实现持久化? 避免因宕机.断电等场景导致进程退出后数据丢失,如果redis的数据都只存放于内存,那么进程退出后数据就丢失了.持久化机制可以持久化内存数据到硬盘,重启redis后基 ...
- redis的持久化方案RDB和AOF
RDB:快照形式,定期把内存中当前时刻的数据保存到磁盘.Redis默认支持的持久化方案.速度快但是服务器断电的时候会丢失部分数据 AOF形式:append only file.把所有对redis数据库 ...
随机推荐
- 【Ubuntu】2. 安装Ubuntu操作系统+VMware Tools
接上一篇,这一部分介绍了操作系统的安装 开启虚拟机,首先由四个选项,选第一个正常安装即可,这里稍等片刻就可以进入安装选项 到了这一步的话可以在左侧设置系统语言,我的英语比较垃圾就选中文了,选择完之后点 ...
- 2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写。
2023-03-24:音视频mp3和h264混合(muxer)编码为mp4,用go语言编写. 答案2023-03-24: 这是一个使用FFmpeg库将MP3和H.264混合编码为MP4的Go语言程序. ...
- vue全家桶进阶之路9:常用指令
以下是一些常见的指令: v-bind - 用于绑定一个或多个属性到组件或 HTML 元素上. v-model - 用于双向绑定一个表单元素或组件的值到数据模型上. v-for - 用于循环遍历一个数组 ...
- hasattr()、getattr()、setattr()函数简介
hasattr(object, name) 判断object对象中是否存在name属性,当然对于python的对象而言,属性包含变量和方法:有则返回True,没有则返回False:需要注意的是name ...
- python爬虫防止IP被封的一些措施(转)
python爬虫防止IP被封的一些措施(转) 在编写爬虫爬取数据的时候,因为很多网站都有反爬虫措施,所以很容易被封IP,就不能继续爬了.在爬取大数据量的数据时更是瑟瑟发抖,时刻担心着下一秒IP可能就被 ...
- 人手一个 Midjourney,StableStudio 重磅开源!
人手一个 Midjourney,StableStudio 重磅开源! Stability AI 公司在上个月 19 号推出了 Alpha 版本 StableLM 大语言模型,包含了 30 亿和 70 ...
- Java配置线程池
一.Java配置线程池 1.线程池分类.其他 1.1.分类 IO密集型 和 CPU密集型 任务的特点不同,因此针对不同类型的任务,选择不同类型的线程池可以获得更好的性能表现. 1.1. IO密集型任务 ...
- SpringMVC请求转发和重定向测试
保存视图解析器的请求转发和重定向测试 1.web.xml模板文件(略) 2.springmvc配置文件 <?xml version="1.0" encoding=" ...
- IT入门深似海,入门到放弃你学废了嘛
我一直觉得IT行业 程序员行业.甚至觉得程序员人群 是一个特殊存在的群体. 入门到放弃,是真的,IT门槛高嘛. 其实吧,IT编程门槛,是有的,但是对于感兴趣的,想学习IT编程同学来说,也是一件容易事情 ...
- Java 网络编程 —— 创建非阻塞的 HTTP 服务器
HTTP 概述 HTTP 客户程序必须先发出一个 HTTP 请求,然后才能接收到来自 HTTP 服器的响应,浏览器就是最常见的 HTTP 客户程序.HTTP 客户程序和 HTTP 服务器分别由不同的软 ...