Redis的两种持久化方式及其优缺点


前言

持久化就是数据库保存到存储设备上(比如磁盘)。防止数据的丢失。
持久化是将程序数据在持久状态和瞬时状态间转换的机制。下面将介绍Redis持久化的两种方式。


一、RDB 快照持久化方式

也叫RDB持久化方式。就是通过拍摄快照的方式来实现持久化,Redis创建快照时,会将某一时刻存在于内存中的数据保存到本地文件中。在redis服务重新启动的时候会加载rdb文件中的数据。快照文件默认为dump.rdb。修改保存文件名:

进入redis安装目录
vi redis.conf

在这里插入图片描述

1.如何触发RDB持久化

1.1 手动触发

  1. save命令
    该命令会阻塞当前Redis服务器,执行save命令期间,Redis不能处理其他命令,直到RDB过程完成为止。具体流程如下图:
    在这里插入图片描述执行完成时候如果存在老的RDB文件,就把新的替代掉旧的。我们的客户端可能都是几万或者是几十万,这种方式显然不可取。

  2. bgsave命令
    执行该命令时,Redis会调用fork()方法创建一份子进程,用于对快照的操作,快照同时还可以响应客户端请求。具体流程如下图:
    在这里插入图片描述虽然bgsave会进行异步保存,但是如果频繁的进行快照,也会有两个问题:
    1、加大磁盘的压力。
    2、主进程fork子进程这个创建过程本身会阻塞主进程,而且快照的数据量越大,阻塞时间越大。

1.1 自动触发

进入redis安装目录
vi redis.conf

在这里插入图片描述

二、AOF 日志持久化方式

在Redis4.0以前,它会重写Redis的AOF日志。但在Redis4.0之后,Redis的AOF重写的时候就直接把RDB的内容写到AOF文件开头,将增量的以指令的方式Append到AOF文件。通俗的理解就是日志记录。
该方式默认是关闭的,需要我们手动开启,默认保存文件名:appendonly.aof。
修改保存文件名:

进入redis安装目录
vi redis.conf

在这里插入图片描述

AOF的触发放式

进入redis安装目录
vi redis.conf

在这里插入图片描述

三、RDB与AOF的优缺点

RDB优点:


(1)RDB文件紧凑,全量备份,非常适合用于进行备份和灾难恢复。
(2)生成RDB文件的时候,redis主进程会fork()一个子进程来处理
所有保存工作,主进程不需要进行任何磁盘IO操作。
(3)RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

RDB缺点:


(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
(2) 快照持久化期间修改的数据不会被保存,可能丢失数据。数据完整性比较差。

AOF优点:


(1)AOF可以更好的保护数据不丢失,一般AOF会每隔1秒,
通过一个后台线程执行一次fsync操作,最多丢失1秒钟的数据。
(2)AOF日志文件没有任何磁盘寻址的开销,写入性能非常高,文件不容易破损。
(3)AOF日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

AOF缺点:


(1)对于同一份数据来说,AOF日志文件通常比RDB数据快照文件更大.
 (2) 恢复数据时时间要比快照模式慢很多。
 

总结

以上就是今天要讲的内容,本文仅仅简单介绍了redis的两种持久化方式,而想要更好的使用redis还需要我们更深入的学习。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值