redis的两种持久化方式RDB和AOF解读

 更新时间:2025年03月04日 09:08:57   作者:L丶小先生  
Redis提供了RDB和AOF两种持久化方式,RDB是快照持久化,通过配置文件中的save指令开启和配置,可以设置触发快照的条件,AOF是日志持久化,每次写操作都会追加到AOF文件中,并可以通过配置文件设置持久化频率和重写策略,RDB和AOF可以结合使用,以提高数据的安全性和恢复效率

redis两种持久化方式RDB和AOF

Redis 提供了两种主要的持久化方式:RDB(Redis Database)和 AOF(Append Only File)。

默认情况下,Redis 没有开启任何持久化方式,但可以在配置文件(redis.conf)中启用它们。

RDB持久化

RDB 是一种快照持久化方式,它会在指定的时间间隔内生成内存数据的快照并保存到磁盘上的一个 RDB 文件中,RDB 快照(Snapshot)机制在每次触发快照保存时,都会生成一个新的 RDB 文件,这个新文件会覆盖之前保存的 RDB 文件。

以下是 RDB 快照机制的一些关键点:

1、开启/禁用方式

在配置文件的SNAPSHOTTING(快照)模块中设置save参数即可开启,相应的禁用RDB持久化只需要不设置save指令或给save传入一个空字符串即可禁用。

2、触发机制

  • 达到配置文件中save指令指定的触发条件
  • 通过SAVEBGSAVE(异步执行) 命令触发

3、参数配置

#900秒内有一个key发生变化触发快照操作
save 900 1
#300秒内有10个key发生变化触发快照操作
save 300 10
# 60秒内有10000个key发生变化触发快照操作
save 60 10000

# 如果配置成no,表示你不在乎数据不一致或者有其他的手段发现和控制这种不一致,那么在快照写入失败时,也能确保redis继续接受新的写请求
stop-writes-on-bgsave-error yes

#rdb快照是否进行压缩,但是会消耗cpu
rdbcompression yes

# 在存储快照后,还可以让redis使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望获取到最大的性能提升,可以关闭此功能
rdbchecksum yes

# rdb快照文件名
dbfilename dump.rdb

#存储位置,默认是当前路径
dir ./

4、数据安全性

  • 由于 RDB 文件会覆盖旧文件,因此在故障恢复时,你只能恢复到最后一次成功快照的时间点的数据状态。
  • 为了提高数据安全性,通常建议结合使用 AOF(Append Only File)持久化,这样即使 RDB 文件丢失,AOF 也可以提供更细粒度的数据恢复。

AOF持久化

AOF 是一种日志持久化方式,它会记录每次写操作并追加到 AOF 文件中,Redis的AOF文件在重写(rewrite)过程中会被覆盖。

AOF重写的目的是为了减少AOF文件的大小,并去除那些冗余的、不再必要的命令,使得该文件只包含恢复当前数据集所需的最小命令集。

在重写工作完成后,Redis会将新的AOF文件覆盖现有的AOF文件,这就相当于压缩了AOF文件,使得AOF文件体积变小了。

以下是 AOF日志机制的一些关键点:

1、开启/禁用方式

在配置文件的APPEND ONLY MODE模块中把appendonly参数设置为yes即可开启,设置为no即禁用。

2、触发机制

每次写操作都会追加到 AOF 文件中。

3、参数配置

#开启aof持久化策略,将接收到的每次写操作请求都追加到aof文件中,在redis重启时,会加载aof文件,优先级比rdb高
appendonly no

# aof文件名
appendfilename "appendonly.aof"

# 设置aof持久化频率
# 有三种选择
# always 每次写都强制调用fsync,这种模式下,redis会相对较慢,但数据最安全
# everysec 每秒启用一次fsync
# no 不调用fsync()。而是让操作系统自行决定sync的时间。这种模式下,redis的性能会最快
appendfsync everysec

# 设置当redis在rewrite的时候,是否允许appendsync。因为redis进程在进行AOF重写的时候,fsync()在主进程中的调用会被阻止,也就是redis的持久化功能暂时失效。默认为no,这样能保证数据安全
no-appendfsync-on-rewrite no

# 设置自动进行AOF重写的基准值,也就是重写启动时的AOF文件大小,假如redis自启动至今还没有进行过重写,那么启动时aof文件的大小会被作为基准值。这个基准值会和当前的aof大小进行比较。如果当前aof大小超出所设置的增长比例,则会触发重写。如果设置auto-aof-rewrite-percentage为0,则会关闭此重写功能
auto-aof-rewrite-percentage 100
# 设置一个最小大小,是为了防止在aof很小时就触发重写
auto-aof-rewrite-min-size 64mb

4、数据安全性

AOF文件会记录从上一次重写到现在的所有写操作,redis故障恢复后会重新执行这些写操作指令,设置了过期时间的key也会被重新写入并重新设置过期时间,从而恢复到故障前的数据状态

5、补充

AOF文件重写可以简单的理解为redis会自动的根据重写机制配置去定时的清理那些冗余的、不再必要的命令,仅保留当前使用中的数据命令,由此可以减少AOF文件的体积,减少磁盘空间使用率以及提高数据恢复的速度。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Redis数据删除与淘汰策略从原理到实战指南

    Redis数据删除与淘汰策略从原理到实战指南

    本文讲解了Redis的数据删除与淘汰策略,从基础概念铺垫到策略细节拆解,再到底层原理和实战配置,重点介绍了三种删除策略(惰性删除、定期删除、主动删除)和六种常用淘汰策略(allkeys-lru、volatile-lru、allkeys-lfu、volatile-lfu等),感兴趣的朋友跟随小编一起看看吧
    2026-04-04
  • Redis3.2.6配置文件详细中文说明

    Redis3.2.6配置文件详细中文说明

    本文为大家分享了Redis3.2.6配置文件详细中文说明,非常详细收藏起来以后工作有用
    2018-10-10
  • Redis抢单预热的实现示例

    Redis抢单预热的实现示例

    本文主要介绍了Redis抢单预热的实现示例,以应对抢单活动带来的高并发访问压力,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • redis批量删除namespace下的数据的实现步骤

    redis批量删除namespace下的数据的实现步骤

    在开发中为了更好的管理数据,对redis进行了分组存储操作,在存值时加了命名空间来实现,本文就来介绍一下redis批量删除namespace下的数据的实现步骤,感兴趣的可以了解一下
    2025-12-12
  • 完美解决Redis在双击redis-server.exe出现闪退问题

    完美解决Redis在双击redis-server.exe出现闪退问题

    本文主要介绍了完美解决Redis在双击redis-server.exe出现闪退问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • Redis解决缓存击穿问题的两种方法

    Redis解决缓存击穿问题的两种方法

    缓存击穿问题也叫热点Key问题,就是⼀个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击,本文给大家介绍了Redis解决缓存击穿问题的两种方法,需要的朋友可以参考下
    2025-03-03
  • redis数据的两种持久化方式对比

    redis数据的两种持久化方式对比

    Redis是我们开发中常用的数据库,今天和大家分享的就是redis持久化的2种方式:RDB(Redis DataBase)和AOF(Apend Only File),希望对大家学习redis有帮助,一起来看看吧。
    2017-08-08
  • Redis 常用命令之基础、进阶与场景化实战案例

    Redis 常用命令之基础、进阶与场景化实战案例

    Redis常用命令全解析,涵盖基础、进阶和场景化实战,包括字符串、哈希、列表、集合、有序集合等数据类型,以及发布订阅、分布式锁、事务等高级功能,本文给大家介绍Redis常用命令之基础、进阶与场景化实战案例,感兴趣的朋友一起看看吧
    2026-01-01
  • redis中的数据结构和编码详解

    redis中的数据结构和编码详解

    本文主要和大家分享几种Redis数据结构详解,希望文中的案例和代码,能帮助到大家。
    2020-03-03
  • Redis实现好友关注的示例代码

    Redis实现好友关注的示例代码

    本文主要介绍了Redis实现好友关注的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01

最新评论