浅谈Redis的持久化机制

120 阅读2分钟

前言

我们在使用Redis的时候,如果Redis意外宕机了怎么办?宕机后重启,如果没有提前做数据备份,就难免会造成数据丢失。因此我们就会使用到Redis的持久化,在数据存入Redis的时候,异步地将数据存入磁盘中,这样即使Redis因为意外重启,也不会造成数据大量丢失。

RDB(分时持久化)

  • RDB是Redis默认的持久化机制

  • RDB持久化文件,速度比较快,而且存储的是一个二进制的文件,传输起来很方便。

  • RDB持久化的时机:
    save 900 1:在900秒内,有1个key改变了,就执行RDB持久化。
    save 300 10:在300秒内,有10个key改变了,就执行RDB持久化。
    save 60 10000:在60秒内,有10000个key改变了,就执行RDB持久化。

  • RDB是定期存储,保存的是数据本身,操作磁盘频率低,速度快,无法保证数据的绝对安全,比如遇到突然断电这种情况,还未来得及存储的数据就会丢失。

AOF(实时持久化)

  • AOF持久化机制默认是关闭的。

  • AOF持久化的速度,相对RDB较慢的,存储的是一个文本文件,到了后期文件会比较大,传输困难。

  • AOF持久化时机:
    appendfsync always:每执行一个写操作,立即持久化到AOF文件中,性能比较低。
    appendfsync everysec:每秒执行一次持久化。
    appendfsync no:会根据你的操作系统不同,环境的不同,在一定时间内执行一次持久化。

  • AOF持久化是每次修改数据时,同步到硬盘(写操作日志),保存的是数据的变更记录,频繁操作磁盘,速度慢,但是数据可靠不容易丢失。

  • Redis官方推荐同时开启RDB和AOF持久化,更安全,避免数据丢失。

注意事项

同时开启RDB和AOF的注意事项:

如果同时开启了AOF和RDB持久化,那么在Redis宕机重启之后,需要加载一个持久化文件,优先选择AOF文件。

如果先开启了RDB,再次开启AOF,如果RDB执行了持久化,那么RDB文件中的内容会被AOF覆盖掉。