Redis支持两种持久化:RDB和AOF模式redis
1、名词解释:服务器
RDB:持久化能够在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
AOF:持久化记录服务器执行的全部写操做命令,并在服务器启动时,经过从新执行这些命令来还原数据集。app
AOF 文件中的命令所有以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。 Redis 还能够在后台对 AOF 文件进行重写(rewrite)性能
使得 AOF 文件的体积不会超出保存数据集状态所需的实际大小。日志
PDB和AOF的优先级:进程
若是同时开启RDB和AOF模式,AOF的优先级要比RDB高:
Redis 还能够同时使用 AOF 持久化和 RDB 持久化。 在这种状况下, 当 Redis 重启时, 它会优先使用 AOF 文件来还原数据集。it
由于 AOF 文件保存的数据集一般比 RDB 文件所保存的数据集更完整。class
AOF 的方式有点像ORCAL的逻辑备库!
AOF redis 还会在后台对数据进行重写,好比set key1 , set key2 ,其实set key1 没用,这样就能够把set key1 删掉了。这样保存下来的数据集就很小了能够压缩了!
你甚至能够关闭持久化功能,让数据只在服务器运行时存在。后台
2、RDB&AOF优缺点im
RDB的优缺点:优势:一、紧凑易于备份,他就一个文件。二、RDB能够最大化redis性能、父进程无需作任何操做只须要for一个子进程便可三、恢复比AOF块缺点:一、数据完整性:若是很是注重数据的完整性,那么RDB就不行,虽然他是一个point-in-time 的快照方式,可是在快照的过程当中,redis重启了,那么在快照中的这些数据将会丢失二、数据很是庞大后,很是耗CPU和时间,那么redis讲可能down掉1秒钟设置更长。AOF的优缺点:优势:一、 使用 AOF 持久化会让 Redis 变得很是耐久,AOF默认的每一秒追加一次也能够修改他的方式没执行一次命令追加一次,因此你最多丢失1秒钟的数据二、 AOF 文件是一个只进行追加操做的日志文件(append only log)三、 Redis 能够在 AOF 文件体积变得过大时,自动地在后台对 AOF 进行重写缺点:一、对于相同的数据集来讲,AOF 文件的体积一般要大于 RDB 文件的体积。二、 根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB