【建议收藏】小滴课堂后端面试题(8)~持续更新中

87 阅读2分钟

题目

  • 说下Redis的持久化⽅式RDB和AOF区别

回答

  • Redis持久化介绍

    • Redis是⼀个内存数据库,如果没有配置持久化,redis重启后 数据就全丢失
    • 因此开启redis的持久化功能,将数据保存到磁盘上,当redis 重启后,可以从磁盘中恢复数据。
  • 两种持久化⽅式

    • RDB (Redis DataBase)
    • AOF (append only file)
  • RDB持久化介绍

    • 在指定的时间间隔内将内存中的数据集快照写⼊磁盘
    • 默认的⽂件名为dump.rdb
    • 产⽣快照的情况
      • save
        • 会阻塞当前Redis服务器,执⾏save命令期间,Redis不 能处理其他命令,直到RDB过程完成为⽌
      • bgsave
        • fork创建⼦进程,RDB持久化过程由⼦进程负责,会在 后台异步进⾏快照操作,快照同时还可以响应客户端请求
      • ⾃动化
        • 配置⽂件来完成,配置触发 Redis的 RDB 持久化条件 ⽐如 "save m n"。表示m秒内数据集存在n次修改时, ⾃动触发bgsave
      • 主从架构
        • 从服务器同步数据的时候,会发送sync执⾏同步操作, master主服务器就会执⾏bgsave
    • 优点
      • RDB⽂件紧凑,全量备份,适合⽤于进⾏备份和灾难恢复
      • 在恢复⼤数据集时的速度⽐ AOF 的恢复速度要快
      • ⽣成的是⼀个紧凑压缩的⼆进制⽂件
    • 缺点
      • 每次快照是⼀次全量备份,fork⼦进程进⾏后台操作,⼦ 进程存在开销
      • 在快照持久化期间修改的数据不会被保存,可能丢失数据
  • AOF持久化介绍

    • append only file,追加⽂件的⽅式,⽂件容易被⼈读懂
    • 以独⽴⽇志的⽅式记录每次写命令, 重启时再重新执⾏AOF ⽂件中的命令达到恢复数据的⽬的
    • 写⼊过程宕机,也不影响之前的数据,可以通过 redis-check aof检查修复问题
    • 配置
      • appendonly yes,默认不开启
      • AOF⽂件名 通过 appendfilename 配置设置,默认⽂件名 是appendonly.aof
      • 存储路径同 RDB持久化⽅式⼀致,使⽤dir配置
    • 核⼼原理
      • Redis每次写⼊命令会追加到aof_buf(缓冲区)
      • AOF缓冲区根据对应的策略向硬盘做同步操作
      • ⾼频AOF会带来影响,特别是每次刷盘
    • 提供了3种同步⽅式,在性能和安全性⽅⾯做出平衡
      • appendfsync always
        • 每次有数据修改发⽣时都会写⼊AOF⽂件,消耗性能多
      • 每秒钟同步⼀次,该策略为AOF的缺省策略。
      • appendfsync no
      • -不主从同步,由操作系统⾃动调度刷磁盘,性能是最好 的,但是最不安全