Redis持久化策略和优缺点

本文详细介绍了Redis的三种持久化方式——快照(RDB)、文件追加(AOF)以及混合持久化,探讨了它们的优缺点,包括数据完整性、性能和恢复能力,并提供了设置持久化策略的方法。
摘要由CSDN通过智能技术生成

首先来谈谈什么是持久化?

持久化就是将数据从内存保存到磁盘的过程,其目的就是为了防止数据丢失。

为什么要这样做?因为内存中的数据在重启服务器后就会丢失,而磁盘上的数据则不会,因此为了系统稳定,我们就需要把数据进行持久化。

1、Redis 持久化方式

Redis 持久化方式主要有以下 3 种:

  • 快照方式(RDB,RedisDataBase):将某个时刻的内存数据,以二进制的方式写入磁盘;由于是二进制写入磁盘,因此效率较高,但是一旦Redis 意外终止,就会导致数据部分丢失;
  • 文件追加方式(AOF,AppendOnlyFile):记录所有的操作命令,并以文本的形式追加到文件中;由于是文本形式写入,因此效率较低,又由于AOF 会记录操作指令,因此保证了数据的完整性。
  • 混合持久化方式:Redis 4.0 之后新增的⽅式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前数据以 RDB形式写入文件的开头,在将后续的操作命令以 AOF 的格式存入文件,这样既能保证 Redis 重启时的速度,又能加降低数据丢失的风险。

2、持久化策略的设置

在连接服务器终端之后使用 redis-cli 命令开启 Redis 客户端,通过以下命令使用不同的持久化策略:

  • RDB(快照方式):当 AOF 和混合持久化都没有开启的情况下默认是 RDB 持久化策略;
  • AOF(文件追加方式):在没有开启混合持久化的情况下,使用 config set appendonly yes 开启;
  • 混合持久化:使用 config set aof-use-rdb-preamble yes 直接开启混合持久化。

3、不同持久化策略之间的优缺点

3.1、RDB(快照方式)

优点:
RDB 内容为二进制数据,占用内存小,更紧凑,适合作为备份文件。
RDB 对灾难恢复非常有用,他是一个紧凑的文件,可以更快的传输到远程服务器进行 Redis 服务。
RDB 可以提高 Redis 的运行速度,每次持久化 Redis 主进程都会 fork() 一个子进程,进行数据持久化到磁盘,Redis 主进程不会执行磁盘 I/O 等操作。
与 AOF 格式文件相比, RDB 文件可以更快的重启,因为文本形式写入磁盘效率低于二进制方式写入磁盘。

缺点:
由于 RDB 只能保存某个时间段的数据,因此一旦中途 Redis 服务意外终止,则会丢失一段时间的 Redis 数据。
RDB 需要经常 fork() 才能使用子进程将其持久化在硬盘上,因此一旦数据集过大, fork()可能会很耗时,并且如果再加上 CPU 性能不佳,可能会导致 Redis 停止为客户端服务几毫秒甚至一秒钟。

3.2、AOF(文件追加方式)

优点:
AOF 持久化保存的数据更加完整。因为 AOF 提供了三种保存策略:“每次操作保存、每秒种保存一次、跟随系统的持久化策略保存”,其中每秒保存一次,从数据的安全性和性能两方面考虑都是个不错的选择,也是 AOF 的默认策略,即使发生意外,最多丢失 1s 钟的数据;
AOF 采用命令追加的写入方式,所有不会出现文件损坏问题,即使由于意外情况,也可以使用 redis-check-aof 工具轻松修复;
AOF 持久化文件,跟容易解析,因为他是把所有 Redis 键值操作命令,以文件的方式存入磁盘,即使不小型使用 flushall 命令删除了所有的键值信息,只要使用 AOF 文件,删除最后的 flushall 命令,重启 Redis 即可恢复之前误删的数据。

缺点:
对于相同数据集来说,AOP 文件要大于 RDB文件。
在 Redis 负载比较高的情况下, RDB 比 AOF 性能更好。
RDB 使用快照持久化 Redis 数据,而 AOF 使用命令追加到 AOF 文件中,因此, RDB 比 AOF 更健壮。

3.3、混合持久化

优点:
结合了 RDB 和 AOF 持久化的优点,开头为 RDB 格式,使得 Redis 可以跟快启动,同时结合 AOF 优点,降低了大量丢失数据的风险。

缺点:
AOF 文件中添加了 RDB 格式的内容,使得 AOF 文件可读性变的更差。
兼容性差。混合持久化 AOF 文件,就不能用在 Redis 4.0 之前的版本了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值