Redis的3种持久化方式
redis提供3种持久化机制用于在重启机器或者系统故障后重用数据(恢复场景)。
方式一:RDB
RDB(snapshotting,快照,redis快照)某一时刻下redis的数据副本。默认的持久化方式。
方式二:AOF
AOF(append-only file,只追加文件):只有会更改redis中的数据的执行命令才会写入硬盘中的AOF文件。AOF由三种保存策略:1.no(让操作系统决定何时写入AOF文件);2.always(每次发生数据修改都会写入AOF文件,严重降低redis性能);3.everysec(每秒钟一次写入AOF,可以一次性将多个写入个命令)。AOF持久化方式实时性更好,是主流的持久化方案,而且使用everysec的策略,能够兼顾数据和写入性能,性能几乎没有损失,即使系统储问题也只是丢失1秒内的数据。
方式三:RDB和AOF混合
RDB和AOF混合,在AOF重写时把RDB的内容写到AOF文件开头,好处是结合了RDB和AOF的有点,快速加载的同时避免丢失过多的数据,缺点是AOF的文件可读性较差。
AOF重写
AOF重写:redis生成一个新的AOF文件,其保存的数据状态和旧的AOF文件一致,但体积更小(进行了命令优化,排除了无效的命令)。重写期间,redis会维持一个aof重写缓冲区,记录服务器在重写的这段时间执行的修改数据的命令,重建完后,把缓冲区的数据追加到新的AOF文件的末尾,就是一个新的经过重写的AOF文件了,同时也能保持与服务器种的数据状态的一致了。