【Redis】Redis的持久化

目录

传统数据库事务的ACID

Redis的持久化方案

持久化配置

①纯内存运行

②RDB模式

优缺点

临时文件

触发RDB规则的情况

如何恢复数据

③AOF模式

日志文件

优缺点


传统数据库事务的ACID

 

Redis的持久化方案

        ①在一定时间内,命令执行次数达到一定上限时,会生成一个文件,文件会不断覆盖,生成文件的IO操作少,但是可能会丢失数据。

        ②记录“写命令”

每行命令都记录

每秒记录一次命令

不记录(默认)

        Redis是操作完之后才进行AOF日志记录(只记录操作的指令记录)

持久化配置

        Redis是否具备持久化,取决于其持久化配置。

①纯内存运行

        不具备持久化,服务器一旦停机会导致数据丢失。

RDB模式

        取决于RDB策略,满足策略的情况执行持久化。

  • 在指定的时间间隔对数据进行快照存储,恢复时会将快照文件直接读取到内存中。
  • Redis会单独创建一个(fork)子线程进行持久化操作,将数据写入到一个临时文件中,等待持久化操作结束后,将这个临时文件替换上次的临时文件,这个过程不执行IO操作,能够保证极高的性能。
  • 如果需要进行大批量的数据恢复,而且对数据恢复的完整性不非常敏感的话,RDB模式会比AOF模式更加高效。

优缺点

优点 适合大规模数据、对数据要求不高的场景
缺点 需要一定时间间隔进行操作
如果Redis意外宕机后,最后一次持久化后的数据可能会丢失
fork线程会占用一定的时间与空间,因为它会产生临时文件

临时文件

        RDB模式会产生临时文件的名字为:dump.rdb(在Redis启动目录下)

        在redis.conf配置文件有规定RDB执行的规则:

默认:

【Redis】Redis的持久化_第1张图片

#   In the example below the behaviour will be to save:

#   after 900 sec (15 min) if at least 1 key changed

#   after 300 sec (5 min) if at least 10 keys changed

#   after 60 sec if at least 10000 keys changed

触发RDB规则的情况

        ①满足sava规则的情况。

        ②执行flushall(清除所有库中的所有key)。

        ③退出Redis时。

如何恢复数据

        将rdb文件放入Redis启动目录,Redis启动时会检查是否存在rdb文件,存在则恢复数据。

AOF模式

        程序会在执行命令/指令时将指令保存在硬盘上。【aop(追加)】

  • 记录每次对服务器的写操作,当服务器重启时会重新执行这些命令恢复原有数据,将全部记录在恢复时执行一遍。
  • 以日志的形式记录写入(set)操作,读(get)操作不记录,此日志文件尽可查看,如手动修改将损坏文件,即使使用redis-chek-aop.exe --fix修复工具进行修复也会缺失数据。

日志文件

        日志的保存文件名是appendonly.aof

#appendonly yes   开启aof模式

#appendfsync always  每次都修改,消耗性能

#appendfsync everysec  每秒修改一次,可能会丢失1秒的数据

# appendfsync no  不开启aof模式

优缺点

        优点:每次更新时同步,文件的完成性更好

        缺点:相较与edb文件,恢复速度慢,效率不高

 

你可能感兴趣的:(redis,数据库)