Redis的持久化

概述

Redis的高性能是由于它所有数据都存储在内存中,为了能让Redis在重启之后仍然保证数据不丢失,那么就需要将数据从内存中同步到硬盘上,这个过程称为持久化操作,Redis的持久化有两种方式,一种叫RDB方式,另一种是AOF方式,我们可以选择其一使用,也可以两者结合。(需要手动配置)

持久化使用的方式

  1. RDB持久化

    • 默认支持,不需要配置。

    • 在指定的时间间隔内,将内存中的数据集快照写入到磁盘)

  2. AOF持久化

    • 将以日志的方式记录服务器所处理的每一个操作,在Redis启动之初,它会读取该文件,来重新构建我们的数据库,这样保证我们启动后数据中的数据是完整的。
  3. 无持久化

    • 通过配置来禁用Redis的服务器的一个持久化的功能,这样我们就可以认为Redis是缓存的一个机制了。
  4. 同时使用RDB和AOF

RDB的方式

优势:

  1. 利于文件备份

  2. 非常轻松的将一个单独的文件压缩后转移到其他的存储介质中

  3. 性能最大化(如果数据集很大,RDB启动效率会更高)

劣势:

  1. 会出现一些宕机的情况(数据会丢失)

  2. 如果数据集非常大,可能会导致服务器停止几毫秒甚至1秒

AOF的方式

优势:

  1. 带来更高的数据安全性。

    • Redis中提供了三种同步策略:
      1. 每秒同步(异步完成,效率高,但是一旦系统宕机,这1s内修改的数据丢失)
      2. 每修改同步(同步持久化,每一次数据发生变化都会被记到磁盘中,效率最低,但是最安全)
      3. 不同步
  2. 对于日志文件的写入采用append模式(追加),即使写入过程中出现了宕机现象,也不会破坏日志文件中已经存在的内容;如果本次操作只是写入了一半数据就出现了系统崩溃,也没关系Redis下一次启动之前可以通过一个工具解决数据一致性的问题。

  3. 如果日志过大,Redis可以自动启动重写机制。

  4. AOF包含一个格式非常清晰、易于理解的日志文件,用于记录所有的修改操作。我们也可以通过这个文件,完成数据的重建。

劣势:

  1. 对于相同数量的数据集而言,AOF比RDB文件大一点。

  2. 根据同步策略的不同,AOF运行效率比RDB低。

原文地址:https://www.cnblogs.com/OFSHK/p/14345259.html