Redis--基础知识点--17--rdb_aof

本文介绍了Redis持久化的两种方式:RDB和AOF。RDB是默认方案,在指定时间和写操作次数下将数据写入磁盘;AOF则是将写指令追加到文件。文中详细阐述了两者的配置、创建、恢复、触发机制、优缺点等,还给出了操作演示,并对如何选择持久化方式提供了建议。

1 RDB

1.1 RDB 是什么

RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。

1.1 开启关闭RDB

默认开启

关闭:

方法一:通过配置文件永久关闭

  1. 找到Redis配置文件
    路径通常为:/etc/redis/redis.conf/etc/redis.conf(具体路径取决于安装方式)。

  2. 修改RDB相关配置
    在配置文件中找到以下参数并修改:

    # 禁用所有RDB快照(保存条件)
    save ""
    
    # 可选:关闭RDB相关功能(根据需求选择)
    stop-writes-on-bgsave-error no  # 禁止因RDB错误停止写入
    rdbcompression no               # 关闭RDB压缩(可选)
    rdbchecksum no                  # 关闭RDB校验和(可选)
    
  3. 重启Redis服务

    sudo systemctl restart redis   # 系统服务方式
    # 或
    redis-cli shutdown && redis-server /etc/redis/redis.conf  # 手动重启
    

方法二:通过命令临时关闭(无需重启)

如果Redis配置支持动态修改(需确认redis.confprotected-mode和权限设置),可直接运行:

redis-cli CONFIG SET save ""

验证是否关闭成功

  1. 检查RDB文件是否停止生成:
    默认路径为/var/lib/redis/dump.rdb,若未生成新文件则表示关闭成功。

  2. 查看Redis配置:

    redis-cli CONFIG GET save
    

    输出应为 save ""

1.2 RDB触发机制

1.2.1 手动触发

在这里插入图片描述

1.2.2 自动触发机制

Redis内部有触发RDB的机制,可以在redis.conf文件中找到,格式如下
在这里插入图片描述

1.3 RDB 执行原理

bgsave开始时会fork主进程得到子进程,子进程共享主进程的内存数据。完成fork后读取内存数据并写入 RDB 文件。fork采用的是copy-on-write技术:

  • 当主进程执行读操作时,访问共享内存;
  • 当主进程执行写操作时,则会拷贝一份数据,执行写操作。

在这里插入图片描述

1.4 RDB记的快照内容

  • 写入时机:RDB 文件仅记录 BGSAVE 执行前的内存快照。
  • 后续写操作:BGSAVE 期间的写操作不会写入当前 RDB 文件,但会保留在内存中,供后续的 RDB 快照或 AOF 日志记录。

2 AOF

2.1 AOF 是什么

AOF全称为Append Only File(追加文件)。Redis处理的每一个写命令都会记录在AOF文件,可以看做是命令日志文件。

2.2 开启关闭AOF

AOF默认是关闭的,需要修改redis.conf配置文件来开启AOF:
在这里插入图片描述
AOF文件一般存储在redis服务器的工作目录下,文件名为 appendonly.aof。

2.3 AOF 触发机制[刷盘机制]

AOF的命令记录的频率也可以通过redis.conf文件来配:
在这里插入图片描述
在这里插入图片描述

2.4 AOF 重写机制

因为是记录命令,AOF文件会比RDB文件大的多。而且AOF会记录对同一个key的多次写操作,但只有最后一次写操作才有意义。

2.4.1 手动执行命令

通过执行bgrewriteaof命令,可以让AOF文件执行重写功能,用最少的命令达到相同效果。
在这里插入图片描述

2.4.2 自动执行机制

Redis也会在触发阈值时自动去重写AOF文件。阈值也可以在redis.conf中配置:
在这里插入图片描述
自动AOF重写的触发需要同时满足以下两个条件:

  • AOF文件当前大小 > auto-aof-rewrite-min-size
    (例如:当前AOF文件必须大于64MB)。
  • AOF文件当前大小 > 上一次重写后AOF文件大小 × (1 + auto-aof-rewrite-percentage / 100)
    (例如:当前大小需超过上一次重写后大小的2倍,即增长100%)。

3 RDB 与 AOF 对比

在这里插入图片描述

4 混合模式

同时开启时的行为:

  • Redis 重启时会优先使用 AOF 文件恢复数据,因为 AOF 通常包含更完整的操作日志。
  • 若 AOF 被禁用或损坏,才会回退到 RDB 快照(如 dump.rdb)。

5 适用场景

同时开启 RDB + AOF:

  • 适合对数据完整性要求高的场景(如电商订单、金融数据),需兼顾恢复速度和实时性。

仅使用 RDB:

  • 适合缓存或数据分析场景,对数据持久性要求较低,但需快速恢复。

仅使用 AOF:

  • 适合需要严格保证数据不丢失的场景(如支付系统),但需接受较长的恢复时间。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值