Redis系列03 -持久化介绍(RDB & AOF)

4 篇文章 0 订阅
3 篇文章 0 订阅

前言

Redis体系学习整理,点我点我
解决问题:redis数据在内存中,机器宕机了断电了,数据丢失怎么办?

Redis作为Nosql中一员,因其完全基于内存,支持多样的数据结构,单线程,使用多路复用I/O等特点,逐渐成为了各企业技术选型中缓存模块的首选。
因为数据在内存中,带来了高性能的同时,也带来数据易丢失的特点。万一机器故障宕机,内存中的数据将会丢失,造成难以预估状态和损失。
所以数据的备份与持久化,就非常有必要了。
所以今天我们来谈谈,Redis最基本的持久化方案。

持久化数据的常用方案

各系统虽然不同,但是持久化思路是类似的。
最常用的有两种方式:**复制和日志。**下面分别介绍一下。

复制(snapshot快照)

将存储介质中的数据,平移到另一块存储介质中。如果存储的区域比较几种,是非常非常高效的。 包括大家数据HashMap的Rehash,也会数据搬迁平移的过程。

日志(操作日志)

把每条操作,一五一十的记录下来。一个大家比较熟悉的场景,就是DB中的redolog。 他就是记录了SQL运行的记录。在恢复时进行批量操作。

RDB

回归到Redis的持久化方式
RDB:redis中的”复制“的模式称为RDB, 记录下内存中二进制数据的快照。

启动方式

人工启动
  • 指令:sava
    * 触发持久化,存储到配置的路径dump.rdb文件中。
    * 会阻塞redis线程,线上用肯定崩。
  • 指令:bgsave
    * 通过操作系统fork一个进程,来异步进行save的操作
配置启动

如save 60 10000(60秒或者10000次操作)
具体的配置如下:
在这里插入图片描述

特殊启动
* 主从复制时
* 关机shutown时
* 重启reload时

优缺点

优点
  • 紧凑压缩的二进制的内存数据,存取高效
  • 存储单时间节点上的快照,非常适合全量复制的场景
  • 数据恢复明显快于AOF
缺点
  1. 无法实时持久化,
  2. 消耗资源
  3. 存在一定的RDB文件的兼容问题。

AOF

AOF:redis中的”日志“的模式被称为AOF(append only file),将每条修改内存的指令将会记录下来。
配置方式在redis.conf文件中有详细说明,有兴趣深入了解的可以进文件读一读。
在这里插入图片描述

开启方式

appendonly yes
appendsync aways
对应的三种策略:

  • always(每次都存):数据0误差,性能低下,会成为瓶颈
  • everysec(每秒1次):
  • no (系统配置)

AOF的重写机制

简介:

当指令数量特别多的时候,AOF文件会变的巨大。但是并不是所有AOF指令都是有效的,比如如下三条AOF记录
1:set name1 zhang3
2:set name1 zhang4
3:set name1 zhang5 其实只有这条是内存中的最终状态。
重写后就是把1和2干掉。这样指令就少了非常多。

启动命令:

bgrewriteaof,讲操作指令存储到 ”复制挤压缓冲区“中。

后记

在工作中因为使用集群,而集群的同步,读写分离等特点,让他天生具备了数据备份的特点。所以我们公司的RDB都是默认关闭的。
但是这些知识在集群的主从复制中,会有非常多的使用。或者说主从复制就是依赖RDB和AOF来完成的。学习这个部分后,我们才能更好的理解集群和主从复制。

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值