第二章:redis持久化
1、rdb和aof介绍
a、RDB是 Redis 默认的持久化方案。在指定的时间间隔内,执行指定次数的写操作,则会将内存中的数据写入到磁盘中。即在指定目录下生成一个dump.rdb文件。Redis 重启会通过加载dump.rdb文件恢复数据。
l 每隔一段时间(几分钟/几小时) 生产一份内存中数据的完整快照 dump
l 简单粗暴
l 适用数据做冷备份
l 对系统性能消耗小,只需要一个子进程保存数据
l 数据保存不实时
b、Redis 默认不开启。它的出现是为了弥补RDB的不足(数据的不一致性),所以它采用日志的形式来记录每个写操作,并追加到文件中。
Redis 重启的会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作
每一条数据写到redis中,同时向磁盘文件写一条redis指令日志,中间会经过系统磁盘写缓存(oscached)fsync参数可以设置强制写入磁盘时间
l 日志型
l oscached 操作系统的缓存
l fsync
2、RDB 的优缺点
优点:
1 适合大规模的数据恢复。
2 如果业务对数据完整性和一致性要求不高,RDB是很好的选择。
缺点:
1 数据的完整性和一致性不高,因为RDB可能在最后一次备份时宕机了。
2 备份时占用内存,因为Redis 在备份时会独立创建一个子进程,将数据写入到一个临时文件(此时内存中的数据是原来的两倍哦),最后再将临时文件替换之前的备份文件。
3 rdb会在持久化数据的时候造成服务短时间延迟-视数据量大小(同步和异步都会影响)
3、AOF 的优缺点:
优点:
1 数据的完整性和一致性更高
2 aof可以保证内存中的数据一条数据都不丢,在配置文件中设置成每有一条数据都执行一次磁盘写操作,但是写入qps性能大降
3 aof的rewrite对性能影响比较小,是由后台进程执行操作,而且在append数据的时候性能也比较高,在数据尾部出现破损也可以修复
缺点
1 aof的持久化文件会比rdb的文件大
2 AOF文件会越来越大,数据恢复也会越来越慢。
3 aof写qps比rdb低,rdb可以让redis性能达到最高
根据redis数据需求和业务场景来确定数据持久化方案
同时开启rdb和aof的话,在恢复数据的时候会系统会默认优先选择aof恢复数据
在灾难发生的时候,比如被小屌丝flushall了,aof必须在rewrite触发之前找到之前的aof文件进行恢复,rdb由于是定时备份的,可以回档到上一个备份事件 做数据回档处理
https://files-cdn.cnblogs.com/files/wuhaidong/RBD&AOF.zip
浙公网安备 33010602011771号