redis 持久化 AOF和RDB区别

请珍惜对你好的人,否则错过了就不知道何时,才能再遇到另一个瞎了眼的。

 

Redis支持RDB和AOF两种持久化机制,持久化功能有效的避免因进程退出造成的数据丢失问题,当下次重启时利用之前持久化的文件即可实现数据恢复。

redis 持久化有2种方式:AOF 和 RDB

 

1、AOF: Append Only File  数据快照 - 默认主流方式

原理:Reids的操作日志以追加的方式写入文件 - (记录 Redis 服务端所有执行的指令) 。

优点:AOF相对RDB更加安全,一般不会有数据的丢失或者很少,官方推荐同时开启AOF和RDB。

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

持久化:Redis的配置文件中存在三种同步方式 

  • appendfsync always #每次有数据修改发生时都会写入AOF文件。
  • appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。
  • appendfsync no #从不同步。高效但是数据不会被持久化,同步的操作交给操作系统来完成。

实现机制:Redis中的AOF默认是不开启的,我们可以在redis.conf 配置文件中进行编辑,开启AOF功能,当需要对数据进行恢复操作时,将之前持久化保存的AOF文件替换掉redis保存rdb文件的目录下,重新启动的redis进程将AOF文件中记录的写操作重新执行一遍,即可恢复数据。

触发机制:每进行一次写操作,就会自动对原先的.aof文件进行增量操作。

使用场景:Redis 正常运行过程中的持久化。

 

2、RDB:Redis DataBase 日志文件形式

原理:Reids在内存中的数据写操作记录定时dump到磁盘上的RDB持久化 - ( Redis 内存数据的一次全量备份,是 Redis 某个时刻所有数据的「快照」)

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

缺点:RDB无法保证数据的绝对安全,有时候就是1s也会有很大的数据丢失。

持久化:通过修改配置文件服务器dump快照的频率,从而改变dump频率。

实现机制:Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。 整个过程中,主进程是不进行任何IO操作的,这就确保了极高的性能.如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺点是最后一次持久化后的数据可能丢失。

触发机制:间隔一段时间后自动进行保存操作.默认频率是1分钟内改了1万次,或5分钟内改了10次,或15分钟内改了1次。

使用场景:1-缓存;2-数据迁移备份

 

当在服务段redis的AOF和RDB同时开启时,AOF优先级更高,因为AOF恢复数据更加全面。

 

posted @ 2022-02-25 09:03  方达达  阅读(78)  评论(0编辑  收藏  举报