redis中rdb、aof都有什么作用?

引言

对于目前线上Redis内存几十G上百G都很常见,如果redis突然宕机/重启,内存中数据会全部丢失;直接从底层数据库中查询并写到redis,将会对底层数据库产生非常大的压力。此时就需要redis自己就能把数据恢复,这就是redis的持久化功能,redis提供了两种持久化方式:

AOF(Append Only File)和 RDB(Redis Database)是 Redis 数据库中两种重要的数据持久化方式,以下是它们的相关介绍:

概念

  • RDB:是 Redis 默认的持久化方式,它会在指定的时间间隔内,对内存中的数据进行快照,将其保存到磁盘上的一个二进制文件中。这个文件就像是数据库在某个时间点的 “照片”,记录了当时所有键值对的数据状态。
  • AOF:以日志的形式记录 Redis 服务器接收到的每一个写操作命令,当 Redis 服务器重启时,会重新执行这些命令来重建数据库状态,从而实现数据的持久化。可以把它理解为是一个记录操作过程的 “日志本”。

工作原理

  • RDB
    • 触发机制:可以通过配置文件设置触发条件,如save 900 1表示在 900 秒内如果至少有 1 个键值对发生了变化,就进行一次 RDB 快照。也可以手动执行SAVEBGSAVE命令来触发。
    • 数据恢复:在 Redis 启动时,它会检查 RDB 文件是否存在,如果存在则读取该文件,将其中的数据加载到内存中,从而恢复数据库状态。
  • AOF
    • 命令记录:当 Redis 接收到一个写命令时,会先将该命令以文本形式追加到 AOF 文件的末尾。
    • 数据恢复:在 Redis 重启时,会逐行读取 AOF 文件中的命令,并按照顺序执行这些命令,从而将数据库恢复到上次持久化后的状态。

优缺点

  • RDB
    • 优点:RDB 文件是一个紧凑的二进制文件,占用空间相对较小,便于数据的备份和传输。并且在恢复数据时,由于是直接加载二进制数据到内存,速度相对较快。
    • 缺点:由于 RDB 是按照一定时间间隔进行快照,所以在两次快照之间如果发生服务器故障,可能会丢失这段时间内的数据。
  • AOF
    • 优点:AOF 记录了每一个写操作,所以数据的完整性更高,即使发生服务器故障,也只会丢失最后一条尚未写入 AOF 文件的命令数据。
    • 缺点:随着写操作的不断增加,AOF 文件会越来越大,可能会占用大量的磁盘空间。而且在恢复数据时,需要重新执行每一个命令,速度相对较慢。

应用场景

  • RDB:适用于对数据完整性要求不是非常高,但对数据恢复速度有一定要求的场景,比如缓存数据。
  • AOF:适用于对数据完整性要求极高的场景,如金融业务等,即使牺牲一定的性能和存储空间,也要确保数据的准确性和完整性。

在实际应用中,通常可以将 RDB 和 AOF 两种持久化方式结合使用,以充分发挥它们的优势,提高 Redis 数据库的数据安全性和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值