Redis提供了两种数据备份的方式,一种是RDB,另外一种是AOF。
RDB | AOF | |
开启/关闭 | 开启:默认开启;关闭:把配置文件中所有的save注释就是关闭了 | 开启:在配置文件中appendonly:yes即是开启了aof;no为关闭 |
同步机制 | 可以指定某个时间内发生多少个命令进行同步,比如1分钟内发生2次命令,就做一次同步 | 每秒同步或者每次发生命令后同步 |
存储内容 | 存储的是Redis里具体的值 | 存储的是执行的更新操作的命令 |
存储文件的路径 | 根据dir以及dbfilenname来指定路径和具体的文件名 | 根据dir以及appendfilename来指定具体的路径和文件名 |
优点 | (1)存储数据文件时会进行压缩,文件体积比aof小; (2)因为存储的是Redis具体的值,并且会经过压缩,因此在恢复的时候速度比aof快; (3)非常适合用备份。 |
(1)aof策略的备份机制是每分钟或者每发生写操作的时候都会同步,因此即使服务器故障,最多只会丢失1秒的数据; (2)aof存储的是Redis命令,并且是直接追加到aof文件后面,因此每次备份的时候只要添加新的数据进去就可以了; (3)如果aof文件比较大了,那么Redis会进行重写,只保留最小的命令集合。 |
缺点 | (1)rdb在多少时间内发生了多少写操作的时候就会触发同步机制,因为采用压缩机制,rdb在同步的时候都重新保存整个Redis中的数据,因此一般会设置5分钟才保存一次数据,在这种情况下,一般服务器故障,会造成至少5分钟的数据丢失; (2)在数据保存进rdb的时候,Redis会fork出一个子进程用来同步,在数据量比较大的时候,可能非常耗时。 |
(1)aof文件因为没有压缩,因此比rdb体积大; (2)aof是在每秒或者每次写操作都进行备份,因此如果并发量比较大,效率可能会有点慢;
扫描二维码关注公众号,回复:
7324264 查看本文章
(3)aof文件因为存储的是命令,因此在灾难恢复的时候Redis会重新运行aof中的命令,因此恢复速度比不上rdb。 |