持久化方式
RDB(Redis Database) 持久化方式:将 Redis 在内存中的数据快照以二进制形式保存到磁盘上,可通过配置不同的保存策略来实现定时备份或者手动触发备份。RDB 持久化方式具有非常高的性能和恢复速度。
AOF(Append Only File) 持久化方式:将 Redis 执行的写命令追加到文件末尾,在 Redis 重启时通过重新执行这些命令来恢复数据。AOF 持久化方式可以确保数据不丢失,并且可以精确地还原 Redis 所有操作。
为什么需要持久化
Redis 是内存数据库,所有的数据都保存在内存中。如果不做持久化处理,一旦服务器宕机,所有的数据就会丢失,无法恢复,这对于生产环境而言是不能接受的。
执行持久化操作可以保证系统的可靠性,即使出现了异常情况,也可以很方便地恢复数据。
注意事项
在进行 RDB 持久化时,如果数据量非常庞大,可能会导致 Redis 在进行持久化操作时卡顿。解决办法是在适当的时间间隔内对数据进行定期备份。
在进行 AOF 持久化时,如果 Redis 服务器意外宕机,可能会导致最后一部分写入数据丢失。解决办法是在适当的时间间隔内将 AOF 文件进行同步和备份。
持久化的具体流程
RDB 持久化
Redis 创建一个子进程,负责将数据集(内存中的数据)写入到临时文件中。
当子进程完成数据持久化操作后,Redis 用临时文件替换原来的持久化文件。
为了避免数据丢失,Redis 可以配置自动备份或手动触发备份。在执行备份操作时,Redis 会先创建一个子进程,然后将数据集写入到一个临时文件中,最后使用该文件覆盖上一个备份文件。
AOF 持久化
Redis 在执行写命令时,将相应的操作追加到 AOF 文件的末尾。
Redis 可以根据配置的策略定期或实时执行 AOF 文件重写操作,去除 AOF 文件中重复、过期或者无效的命令,并缩小文件大小。
当 Redis 服务器重新启动时,它会通过重新执行 AOF 文件中的所有写命令来还原数据集。
需要注意的是,当 Redis 同时开启 RDB 和 AOF 持久化时,一旦 Redis 重启,它将优先加载 AOF 文件,因为 AOF 文件包含的是更加完整和准确的数据。