Redis
首先,Redis本身是一个基于Key-Value结构的内存数据库,为了避免Redis故障导致数据丢失的问题,所以提供了RDB和AOF两种持久化机制。
RDB
RDB是通过快照的方式来实现持久化的,也就是说会根据快照的触发条件,把内存里面的数据快照写入到磁盘,以二进制的压缩文件进行存储。
优势:
1、适合大规模的数据恢复
2、最后一次持久化可能会造成数据丢失
3、节省磁盘空间
4、恢复速度快
5、对数据完整性和一致性要求不高的时候适用
劣势:
1、Fork的时候,内存中的数据被克隆了一份,大致2倍的膨胀性要考虑
2、数据庞大的适合比较消耗性能
3、在备份周期的一段间隔内做一次备份,如果Redis意外down掉,就会丢失最后一次快找后的所有修改
AOF
AOF持久化,它是一种近乎实时的方式,把Redis Server执行的事务命令进行追加存储。简单来说,就是客户端执行一个数据变更的操作,Redis Server就会把这个命令追加到aof缓冲区的末尾,然后再把缓冲区的数据写入到磁盘的AOF文件里面,至于最终什么时候真正持久化到磁盘,是根据刷盘的策略来决定的。
优势:
1、备份机制更稳健,丢失数据概率更低
2、可读的日志文本,通过操作AOF文件,可以处理实务操作
劣势:
1、比起RDB占用更多的磁盘空间
2、恢复备份速度更慢
3、每次读写都同步的话,有一定的性能压力