redis的持久化策略:RDB, AOF

RDB

RDB是Redis默认的持久化方式,它将整个数据集保存到磁盘上的一个压缩快照中。当Redis要进行RDB快照操作时,它将内存中的数据集写入到临时文件中,然后再原子地将生成的RDB文件重命名为新的RDB文件来取代旧的RDB文件。这意味着在任何时候都只有一个RDB文件存在于磁盘上,减少了磁盘空间的使用。

RDB有两种触发方式:

  • 自动触发:Redis可以根据您的配置自动执行RDB快照,例如在一定的时间间隔或者执行一定数量的写命令后。
  • 手动触发:您可以通过向Redis发送SAVE或BGSAVE命令来手动执行RDB快照。但是需要注意,手动进行快照可能会影响性能,因为它需要对整个Redis实例进行快照,而且在执行BGSAVE快照命令时,Redis将自动 fork 出一个子进程来进行快照操作,可能会占用大量的CPU和内存资源。

RDB持久化的优点是速度快、压缩效率高,适合用于大规模的数据集。但其缺点是可能会丢失一定量的数据,因为如果Redis服务崩溃,最后一次快照之后产生的数据将丢失。

AOF

AOF将每个写操作都保存到一个文件中,可以根据需要重构原始数据集来完全重新执行保存的命令。因为AOF记录的是生成该数据集的所有操作,因此该文件越来越大。为此,Redis提供了两种解决方案。

  • 定期重写:Redis启动一个新进程来重写AOF文件,以删除文件中旧数据的命令,并将其替换为生成相同数据集所必需的命令。这个过程没有中断Redis的正常操作,并且可以配置为每隔一定时间或者写入指定数量的命令后执行。
  • 文件压缩:Redis可以在AOF文件不断增长的情况下,使用BGREWRITEAOF命令进行压缩。该命令会对AOF文件进行重写,并且优化其中的命令以减小文件大小。与定期重写不同,文件压缩将删除所有旧数据,并用重写后的数据替换AOF文件。

一般来说,AOF比RDB更可靠,因为它记录了数据的所有修改记录,所以在Redis重启时,可以通过重放AOF文件中的写命令来准确地还原数据集。另外,由于可将AOF文件以只读方式传送到备份副本,所以AOF也是一种备份数据的好方法。

但AOF也有一些缺点。由于AOF文件需要记录每个写操作,因此它会比RDB更占用磁盘空间,而且在AOF文件不断增长时,重写AOF文件并压缩它可能会对Redis的性能产生不好的影响,尤其在写负载非常大的情况下。


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值