Redis 共提供了两种不同形式的持久化方式

  • RDB( redis database )
  • AOF( append of file )

    方式1:RDB

    简介

    在指定的时间间隔内,将内存中的数据集快照写入磁盘中,也就是“快照”。
    从“快照”恢复的时候,是将快照文件直接读取到内存中

    如何执行备份

    RDB会单独创建一个子进程(fork进程)来进行数据的持久化操作,首先会将数据写入到一个临时文件中,然后等到持久化过程都结束后,再将这个临时文件去替换掉上一次持久化的文件。在整个过程中,主进程是不进行任何的IO操作的,这也就确保了极高的性能。

    如果需要大规模的恢复数据,且对数据的完整性没有很大的要求,那么RDB方式会比AOF方式更加的高效。其缺点就在于最后一次持久化操作的数据可能会丢失。

Fork

  • Fork的作用:复制一个和当前进程一样的进程,新进程的所有数据(变量、环境变量、计数器等)都和原来的进程保持一致,但是是一个全新的进程,并且作为原进程的子进程。
  • 一般情况下,父进程和子进程会共用同一段物理内存,只有当进程空间的各段内容发生变化的时候,才会将父进程的内容复制一份,提供给子进程。

    持久化流程图

    image.png

    dump.rdp文件

    redis.conf中配置文件的名称,默认为:dump.rdp
    此文件默认在 redis 启动的目录下

save && bgsave

  • save:只管保存,其他不管,全部阻塞。
  • bgsave:redis 会在后台异步进行快照操作,快照的同时还可以处理客户端的请求。
  • 可以通过 lastsave 命令来获取上一次执行快照的时间。

    优势

  • 适合大规模的数据恢复

  • 对数据完整性和一致性要求不高的时候适合使用(最后一次保存的数据容易丢失)
  • 可以节省磁盘空间
  • 恢复速度很快(从内存中恢复)

image.png

总结

image.png