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实现商品秒杀的示例代码,详细介绍了Redis的List、Set和Hash类型,以及使用Redis事务保证原子性的方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

    Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

    在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能会遇到各种连接问题,其中“客户端IP不在白名单中”是一个常见的错误,本文将从错误分析、原因排查、解决方案等详细探讨如何解决这一问题
    2025-01-01
  • Redis高可用的三种实现方式

    Redis高可用的三种实现方式

    在实际生产环境中为保证Redis的服务连续性和可靠性,需要设计一个高可用架构,本文就来介绍一下Redis高可用的三种实现方式,主要包括主从复制模式,Redis Sentinel模式和Redis Cluster模式,感兴趣的可以了解一下
    2023-12-12
  • redis-cli登录远程redis服务并批量导入数据

    redis-cli登录远程redis服务并批量导入数据

    本文主要介绍了redis-cli登录远程redis服务并批量导入数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • 为啥Redis使用pipelining会更快

    为啥Redis使用pipelining会更快

    这篇文章主要介绍了为啥Redis使用pipelining会更快,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Redis缓存异常之缓存雪崩问题解读

    Redis缓存异常之缓存雪崩问题解读

    文章主要介绍了缓存雪崩、击穿和穿透问题,以及针对这些问题的解决方法,包括服务熔断、服务降级、请求限流和布隆过滤器等
    2025-01-01
  • 基于Redis的List实现特价商品列表功能

    基于Redis的List实现特价商品列表功能

    本文通过场景分析给大家介绍了基于Redis的List实现特价商品列表,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • SpringBoot3+Redis实现分布式锁的配置方法

    SpringBoot3+Redis实现分布式锁的配置方法

    这篇文章主要介绍了SpringBoot3+Redis实现分布式锁,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • redis使用不当导致应用卡死bug的过程解析

    redis使用不当导致应用卡死bug的过程解析

    本文主要记一次找因redis使用不当导致应用卡死bug的过程,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • Redis实现锁续期的项目实践

    Redis实现锁续期的项目实践

    本文介绍了使用Redis实现分布式锁的续期,包括使用Lua脚本、Redlock算法和Redisson客户端等方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-12-12

最新评论