RDB:
Redis DataBase,在指定的时间间隔内将内存中的数据集
快照写⼊磁盘
,实际操作过程是fork⼀个⼦进程,先将数据集写⼊临时⽂件,写⼊成功后,再替换之前的⽂件,⽤
⼆进制压缩存储
。
优点:
-
整个Redis数据库将只包含⼀个⽂件 dump.rdb,⽅便持久化。
-
-
性能最⼤化,fork ⼦进程来完成写操作,让主进程继续处理命令,所以是 IO 最⼤化。使⽤单独⼦进程来进⾏持久化,主进程不会进⾏任何 IO 操作,保证了 redis 的⾼性能
-
缺点:
-
数据安全性低。RDB 是间隔⼀段时间进⾏持久化,如果持久化之间 redis 发⽣故障,会发⽣数据丢失。所以这种⽅式更适合数据要求不严谨的时候)
-
由于RDB是通过fork⼦进程来协助完成数据持久化⼯作的,因此,如果当数据集较⼤时,可能会导致整个服务器停⽌服务⼏百毫秒,甚⾄是1
秒钟。
AOF:
Append Only File,以⽇志的形式记录服务器所处理的每⼀个写、删除操作,查询操作不会记
录,以⽂本的⽅式记录,可以打开⽂件看到详细的操作记录
优点:
-
数据安全,Redis中提供了
3种同步策略
,即每秒同步、
每修改同步
和不同步。事实上,每秒同步也是异步完成的,其效率也是⾮常⾼的,所差的是⼀旦系统出现宕机现象,那么这⼀秒钟之内修改的数据将会丢失。⽽每修改同步,我们可以将其视为同步持久化,即每次发⽣的数据变化都会被⽴即记录到磁盘中。。
-
通过 append 模式写⽂件,即使中途服务器宕机也不会破坏已经存在的内容,可以通过 redis-check-aof ⼯具解决数据⼀致性问题。
-
AOF 机制的 rewrite 模式。定期对AOF⽂件进⾏
重写
,以达到压缩的⽬的
缺点:
- AOF ⽂件⽐ RDB ⽂件⼤,且恢复速度慢。
- 数据集⼤的时候,⽐ rdb 启动效率低。
-
运⾏效率没有RDB⾼
总结:
AOF⽂件⽐RDB更新频率⾼,优先使⽤AOF还原数据,AOF⽐RDB更安全也更⼤,RDB性能⽐AOF好,如果两个都配了优先加载AOF。