redis的持久化

redis持久化

redis之所以能够有高性能是因为将数据存储到了内存中,为了使redis重启之后数据不丢失,就要把数据同步到硬盘里保存,保存到硬盘中这一过程就是持久化.

redis持久化方式

redis支持两种持久化方式

1.RDB持久化

RDB持久化是在指定的时间间隔内将内存中的数据集快照写入磁盘
优点
①只包含一个文件,对于文件备份是很好的,出现灾难性故障,容易进行恢复
②对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上
③性能最大化,对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork(分叉)出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO操作了。
④相比AOF机制,RDB启动效率更高
缺点
①如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。
②由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟
RDB机制配置
redis的持久化

2.AOF持久化

AOF将以日志的形式记录服务器所处理的每一个写操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。
优点
①更高的数据安全性
②该机制对日志文件的写入操作采用的是append模式,在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。
③AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。
缺点
①AOF文件大于RDB文件
②AOF在效率上不如RDB
AOF持久化配置
将appendonly修改为yes,开启aof持久化机制,默认会在目录下产生一个appendonly.aof文件
AOF持久化时机
redis的持久化