一.RDB有哪些问题?
1.耗时
2.好性能
![](https://img.haomeiwen.com/i15368247/e657111a61ab754e.png)
3.不可控容易丢失数据
二.AOF持久化
以日志形式记录服务器每一个操作,在Redis服务器启动之初会读取该文件来重新构建数据库,以保证启动后数据库中的数据是完整的。
三.AOF的三种策略
redis 写命名时,把日志不是直接写在磁盘中,而是写在缓冲区中,然后根据策略刷新在磁盘中
1.always,
2.everysec 每秒刷新到磁盘(默认)
![](https://img.haomeiwen.com/i15368247/2693e2d0eda822a5.png)
3.no 根据操作系统来决定
这三种策略的对比
![](https://img.haomeiwen.com/i15368247/95a9dc98466c4f27.png)
四.AOF重写
1. 随着命令不断从AOF缓存中写入到AOF文件中,AOF文件会越来越大,为了解决这个问题,Redis引入了AOF重写机制来压缩AOF文件。
2. AOF文件的压缩和RDB文件的压缩原理不一样,RDB文件的压缩是使用压缩算法将二进制的RDB文件压缩,而AOF文件的压缩主要是去除AOF文件中的无效命令,比如说:
3. 同一个key的多次写入只保留最后一个命令
4. 已删除、已过期的key的写命令不再保留
AOF重写的触发机制也分为手动触发和自动触发两种方式。
#手动触发
执行bgrewriteaof命令直接触发AOF重写
#自动触发
在redis.config配置文件中有两个配置项
1.auto-aof-rewrite-min-size 64MB 当AOF文件小于64MB的时候不进行AOF重写
2.auto-aof-rewrite-min-percenrage 100 当当前AOF文件比上次AOF重写后的文件大100%的时候进行AOF重写
可以在redis.conf配置文件中添加这两个参数来自动触发AOF重写,执行bgrewriteaof命令
五.配置
![](https://img.haomeiwen.com/i15368247/a6e7c42ebe1a9580.png)
六.Redis重启时加载持久化文件的顺序
1.Redis重启的时候优先加载AOF文件,如果AOF文件不存在再去加载RDB文件。
2.如果AOF文件和RDB文件都不存在,那么直接启动。
3.不论加载AOF文件还是RDB文件,只要发生错误都会打印错误信息,并且启动失败
七.总结
关于Redis的两种持久化方式到这里就介绍完了,这里再总结一下:
1. RDB持久化基于内存快照存储二进制文件,AOF持久化基于写命令存储文本文件。
2.RDB文件采用了压缩算法,比较小;AOF文件随着命令的叠加会越来越大,Redis提供了AOF重写来压缩AOF文件。
3. 恢复RDB文件的速度比AOF文件快很多。
4.RDB持久化方式实时性不好,所以AOF持久化更主流。
5.合理的使用AOF的同步策略,理论上不会丢失大量的数据。
网友评论