前言

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的更多相关文章

  1. Redis数据持久化(RDB、AOF)

    1. 简介   Redis作为内存型数据库,数据都保存在内存中,如果重启或意外宕机后,数据会全部丢失.因此,Redis提供了完善的持久化机制,将内存中的数据持久化到磁盘上,避免了完整性和安全性的问题, ...

  2. Redis:持久化之RDB和AOF

    Redis:持久化之RDB和AOF RDB(Redis DataBase) 在指定的时间间隔内将内存中的数据集快照写入硬盘 也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里. R ...

  3. 分布式缓存Redis的持久化方式RDB和AOF

    一.前言 Redis支持两种方式的持久化,RDB和AOF.RDB会根据指定的规则“定时”将内存中的数据存储到硬盘上,AOF会在每次执行命令后将命令本身记录下来.两种持久化方式可以单独使用其中一种,但更 ...

  4. redis的持久化方式RDB和AOF的区别

    1.前言 最近在项目中使用到Redis做缓存,方便多个业务进程之间共享数据.由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能, ...

  5. 11、Redis的持久化(RDB、AOF)

    写在前面的话:读书破万卷,编码如有神 --------------------------------------------------------------------------------- ...

  6. NoSql数据库Redis系列(3)——Redis数据持久化(RDB)

    大家都知道 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比传统数据库 ...

  7. Redis系列(三):Redis的持久化机制(RDB、AOF)

    本篇博客是Redis系列的第3篇,主要讲解下Redis的2种持久化机制:RDB和AOF. 本系列的前2篇可以点击以下链接查看: Redis系列(一):Redis简介及环境安装. Redis系列(二): ...

  8. 详细分析Redis的持久化操作——RDB与AOF

    一.前言   由于疫情的原因,学校还没有开学,这也就让我有了很多的时间.趁着时间比较多,我终于可以开始学习那些之前一直想学的技术了.最近这几天开始学习Redis,买了本<Redis实战>, ...

  9. redis的持久化(RDB与AOF)

    1.为什么redis要实现持久化? 避免因宕机.断电等场景导致进程退出后数据丢失,如果redis的数据都只存放于内存,那么进程退出后数据就丢失了.持久化机制可以持久化内存数据到硬盘,重启redis后基 ...

  10. redis的持久化方案RDB和AOF

    RDB:快照形式,定期把内存中当前时刻的数据保存到磁盘.Redis默认支持的持久化方案.速度快但是服务器断电的时候会丢失部分数据 AOF形式:append only file.把所有对redis数据库 ...

随机推荐

  1. Centos7 部署Django项目 uwsgi + nginx

    启动 首先确保你的django项目是可以在虚拟环境中跑起来的,环境管理窝用的是pyenv,pyenv不知道什么东西的可以参考窝之前写过的Pyenv环境管理的安装文. 项目启动 python manag ...

  2. 高精度------C++

    高精度运算------C++ (加减乘除) 例:ZOJ2001 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1001 The ...

  3. 2022-02-08:k8s安装centos,yaml如何写? 注意:如果不配置参数,centos容器会处于terminated状态。如何让容器处于running状态?

    2022-02-08:k8s安装centos,yaml如何写? 注意:如果不配置参数,centos容器会处于terminated状态.如何让容器处于running状态? 答案2022-02-08: 加 ...

  4. vue全家桶进阶之路27:Vue.js 3.0的下载和安装

    使用脚手架vue-cli创建vue3项目,创建前需要准备以下: 1.node.js环境 见:https://www.cnblogs.com/beichengshiqiao/p/17251233.htm ...

  5. GPT大语言模型Alpaca-lora本地化部署实践【大语言模型实践一】

    模型介绍 Alpaca模型是斯坦福大学研发的LLM(Large Language Model,大语言)开源模型,是一个在52K指令上从LLaMA 7B(Meta公司开源的7B)模型微调而来,具有70亿 ...

  6. phpstudy-sqlilabs-less-4

    题目:GET - Error based - Double Quotes - String              基于错误的GET双引号字符型注入 可能的注入点(不全) ' " ) ') ...

  7. ics-05

    挺有意思的一题 攻防世界->web->ics-05 打开题目链接,就是一个很正常的管理系统,只有左侧的可以点着玩 并且点到**设备维护中心时,页面变为index.php 查看响应 发现云平 ...

  8. 野火指南者(STM32F103VET6)应用:实现USB虚拟串口(CDC_VPC)

    MCU:STM32F103VET6 开发环境:STM32CubeMX+MDK5 实现USB的虚拟串口不需要去理解USB的底层驱动,只需要STM32CubeMX去配置生成工程即可.在野火的指南者中,是没 ...

  9. MQ系列13:消息大量堆积如何为解决

    MQ系列1:消息中间件执行原理 MQ系列2:消息中间件的技术选型 MQ系列3:RocketMQ 架构分析 MQ系列4:NameServer 原理解析 MQ系列5:RocketMQ消息的发送模式 MQ系 ...

  10. JuiceFS 社区版 v1.1- Beta 发布,新增五个实用功能

    我们很高兴地宣布 JuiceFS v1.1-Beta 版本正式发布啦!这是一个功能丰富的版本,带来了许多实用的新功能和改进.在这个版本中我们新增了以下功能: 目录配额:为目录设置配额限制,控制其大小和 ...