appendonly:这个参数是AOF的开关 , 配置成yes可以打开AOF持久化机制 。 打开AOF机制后appendfsync:我们知道Redis中有个事件循环 , Redis在每个事件循环都会将aof缓冲区中的内容写入到操作系统的内存缓冲区 。 这个参数就是来配置将内存缓冲区中的数据同步到硬盘上的AOF文件中的更新频率 , 有always、everysec、no三个配置值 。 always表示每次执行写入操作 , 就会立即将内存缓冲区中的内容同步到磁盘中的AOF文件中 。 这种配置性能比较差 , 但是可以确保数据不丢失 。 everysec表示每秒执行一次将操作系统的内存缓冲区中的数据同步到磁盘的AOF文件中 , 这个操作由一个线程来负责 , 性能很高 。 no表示由操作系统来控制何时将内存缓冲区中的数据同步到硬盘的AOF文件中 。 这种操作在服务器出现异常时会丢失一部分数据 。 下面说说AOF文件的还原过程 , 我们知道AOF文件中存储的是所有曾经执行过的写命令 , 所以服务器只要读入并重新执行一遍AOF文件里保存的写命令 , 就可以还原服务器关闭之前的数据库内容 。 同时为了解决在Redis运行过程中AOF文件越来越大 , Redis还提供了AOF重写功能 , 关于AOF重写原理在此不具体介绍 , 有兴趣的我们可以私下讨论 。03RDB和AOF区别和联系 , 以及同时工作时的情况
首先我们总结一下两种方式的区别和联系:
- RDB持久化:默认开启;全量备份 , 一次性保存整个数据库;体积小 , 数据恢复快;服务器异常时可能会丢失部分数据;SAVE操作会阻塞 , BGSAVE不阻塞
- AOF持久化:默认关闭;增量备份 , 一次保存一个修改数据库的命令;体积大 , 数据恢复慢;备份频率可以自己设置;不会出现阻塞
当RDB和AOF同时开始时:
- 如果RDB在执行snapshotting操作 , 那么redis不会执行AOF rewrite; 如果redis在执行AOF rewrite , 那么就不会执行RDB snapshotting
- 如果RDB在执行snapshotting , 此时用户执行BGREWRITEAOF命令 , 那么等RDB快照生成之后 , 才会去执行AOF rewrite
- 同时有RDB snapshot文件和AOF日志文件 , 那么redis重启的时候 , 会优先使用AOF进行数据恢复 , 因为其中的日志更完整
推荐阅读
-
GPLP犀牛财经■vivo试水5G下沉市场结果如何?,新机Z6定价2298元
-
东西|成龙:我的收藏有几个亿,但在马未都眼里都是垃圾
-
群体免疫|美国确诊超700万!美媒:美国离实现“群体免疫”还很遥远
-
数码八叔 小米10T要来了,国内也有,抢不到K30超大杯的米粉不妨等等
-
想开网店都需要什么条件、怎么开 开网店需要具备什么
-
-
水库的作用是什么 水库的作用是什么 建造条件是怎样的
-
南宁日报|!第17届东博会启动会前第一次消杀活动,疫情之下安全办展办会
-
晓柳说说说娱乐|同是戴面具:躲过了鞠婧祎,逃过了赵丽颖,最后却被她惊艳到了!
-
-
周一见|《火锅英雄》导演再出征:这次拍摄道具只有vivo X50 Pro+
-
-
-
『中国女足』太疯狂!中国女足12-2王者归来,孙雯秒变大功臣,足协送来大喜讯
-
午间时刻|陶红真是冻龄女神,穿酒红色的连衣裙出席活动,减龄优雅又大气
-
-
海贼资讯|李兰迪瘦身成功大变样,大胆挑战“三分裤”,秀出奶油腿太诱人
-
11|世卫组织:全球新冠肺炎确诊病例超过4793万例
-
【兵鉴堂】多州医院告急,搬起石头砸自己的脚!特朗普一纸禁令引发严重后果
-