美文网首页
redis RDB AOF的过程中 主线程会阻塞?

redis RDB AOF的过程中 主线程会阻塞?

作者: 赵优秀 | 来源:发表于2025-04-07 11:13 被阅读0次

在 Redis 的持久化机制中,RDB 和 AOF 是两种主要的方式。关于主线程是否会阻塞的问题,以下是具体的分析:

1. RDB 持久化

  • 触发 RDB 持久化
    RDB(Redis Database Backup)是通过快照的方式将内存中的数据写入磁盘。触发 RDB 持久化的方式包括手动执行 SAVEBGSAVE 命令,以及配置的定时快照策略。

  • 主线程是否阻塞

    • 如果使用 SAVE 命令:主线程会阻塞,直到 RDB 文件生成完成。在此期间,Redis 无法处理其他客户端请求。
    • 如果使用 BGSAVE 命令:主线程不会阻塞。Redis 会 fork 一个子进程来负责生成 RDB 文件,主线程继续处理客户端请求。

2. AOF 持久化

  • AOF(Append Only File)
    AOF 是通过记录操作命令的方式来实现持久化。每次有写操作时,Redis 会将该操作命令追加到 AOF 文件中。

  • 主线程是否阻塞

    • 在正常情况下,AOF 写入磁盘的操作可以通过配置 appendfsync 参数控制:
      • appendfsync always:每次写操作都会同步刷盘,可能会导致主线程轻微阻塞。
      • appendfsync everysec(默认值):每秒同步一次,大多数情况下不会阻塞主线程。
      • appendfsync no:不主动同步,由操作系统决定何时刷盘,几乎不会阻塞主线程。
    • AOF 重写(Rewrite)时:当 AOF 文件过大时,Redis 会触发 AOF 重写以压缩文件大小。类似于 RDB 的 BGSAVE,AOF 重写也是通过 fork 子进程完成的,主线程不会阻塞。

总结

  • RDB 持久化SAVE 会阻塞主线程,BGSAVE 不会。
  • AOF 持久化:取决于 appendfsync 配置,通常只有在 always 模式下可能会轻微阻塞主线程;AOF 重写不会阻塞主线程。

如果你发现 Redis 主线程频繁阻塞,可以检查以下几点:

  1. 是否使用了 SAVE 命令。
  2. AOF 配置是否为 appendfsync always
  3. 系统资源是否充足(如 I/O 压力过高可能导致延迟增加)。

相关文章

  • redis总结

    redis 持久化 aof 追加rdb 快照 aof文件比rdb更新频率高,优先使用aof还原数据。 aof比...

  • Redis的持久化

    Redis的持久化分为rdb(快照) aof(append-only file) 和rdb和aof混合模式Rdb默...

  • redis两种存储结构aof和rdb

    1.redis存储结构的方式 rdb和aof aof默认关闭,若aof开启,则优先aof rdb: 1.用于保存和...

  • Redis 的RDB和AOF

    RDB (redis database redis数据库快照) 触发命令 SAVE阻塞 BGSAVE另起子线程,不...

  • 备份-恢复机制

    redis持久化RDB和AOF

  • Redis持久化

    持久化方式:1.RDB2.AOF RDB RDB工作原理:涉及两个命令save和bgsave,save命令会阻塞当...

  • redis的 rdb 和 aof 持久化的区别

    redis的 rdb 和 aof 持久化的区别 aof,rdb是两种 redis持久化的机制。用于crash后,r...

  • redis的 rdb 和 aof 持久化的区别

    redis的 rdb 和 aof 持久化的区别 aof,rdb是两种 redis持久化的机制。用于crash后,r...

  • Redis的持久化与数据淘汰策略

    1 Redis的持久化机制:RDB和AOF RDB就是快照方式,AOF是记录操作日志的方式。目前Redis持久化的...

  • redis持久化机制

    redis持久化机制的原理 一、两种实现redis持久化的机制,RDB模式和AOF模式 ①RDB模式 ②AOF模式...

网友评论

      本文标题:redis RDB AOF的过程中 主线程会阻塞?

      本文链接:https://www.haomeiwen.com/subject/tsnavjtx.html