Redis 持久化和aof相关问题

Redis 持久化和aof

Redis 如何实现数据不丢失?

有三种方式实行持久化

  • aof,将执行成功的写命令保存到aof文件中,如果aof文件过大会发生aof重写
  • rdb,保存内存数据的快照
  • 混合模式,同时使用aof和rdb,提高性能

为什么aof要先执行命令再保存命令

不用检查命令合法,不会阻塞当前写的命令

缺点:数据丢失,阻塞后续命令的执行

aof回写的方式有几种

三种策略

  • always,每次执行完写命令之后就会将aof缓冲池的内容写入文件
    • 优点:可靠性高
    • 缺点:性能开销大
  • everysec,每隔一秒将aof缓存池的内容写入文件
    • 优点:性能适中
    • 缺点:丢失1秒的数据
  • no,将写入文件的时机交给操作系统
    • 优点:性能好
    • 缺点:可能丢失很多数据

AOF 日志过大,会触发什么机制?

会触发aof重写机制,aof重写创建一个子进程用来扫描数据库的内容,将内容保存到新的aof文件中,如果数据库新增数据,就会先这个数据保存到aof重写缓冲池中,子进程扫描结束之后就会发送信号给主进程,主进程会将aof重写缓冲池的内容追加到新的aof文件,将新文件改名覆盖旧文件。

为什么aof重写要开启子进程,为什么不是开启子线程

  • 开启子进程不阻塞主进程的运行
  • 子进程有父进程的内存副本,如果开启子线程,会涉及到加锁,解锁问题,会降低性能。如果父进程的内存发生变化,会拷贝一份到子进程,子进程也就没有加锁解锁问题了
posted @   xiuer211  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示