**注意:**RDB持久化方式是可能发生数据丢失的情况的,刚才说过这种持久化方式是将数据以快照的形式写入二进制文件中,而快照只是某一时刻内存中的数据,试想如果子进程高高兴兴地拿着这个快照去进行持久化了,而这期间主进程继续处理客户端的请求使得内存中的数据发生了修改,那么子进程仅凭手中的快照是无法得知数据已经被修改过了,也就是说主进程的修改在子进程是不会反应出来的,这样将会丢失持久化期间变化的数据内容。
二、AOF机制
AOF机制是将每一个写命令通过write函数保存到文件中,就好像日志记录一样,与RDB不同,AOF机制记录的不是内存中的数据,而是每一条命令。
这样随之而来一个问题:随着时间的推移,AOF文件体积会逐渐膨胀变得越来越大。为了解决这个问题,引入了“AOF文件重写机制”,该机制的原理将在后面谈到,重写之后的新AOF文件与旧文件相比,新旧两个文件所保存的数据库状态是相同的,但是新AOF文件不会包含浪费空间的冗余命令,因此文件重写机制能大大减小AOF文件的体积。
redis也提供了三种方式来触发AOF机制:always、everysec、no。
-
**always:**每次数据发生修改都会记录到磁盘,这种方式性能较差但数据完整性较好。
-
**everysec:**每秒记录一次数据,但如果一秒内发生了宕机,将会丢失这一秒钟内修改或新增过的数据。推荐使用这种方式。
-
**no:**从不同步数据。
三、RDB机制和AOF机制该如何选择?
正所谓小孩子才做 需要zi料+ 绿色徽【vip1024b】
选择,大人全都要。通常都是将两种机制结合使用比较好,当然如果场景特殊则参考下表自行定夺。
| RDB | AOF |
体积 | 小 | 大 |
恢复速度 | 快 | 慢 |
数据安全性 | 可能会发生数据丢失 | 根据策略决定 |
总结
谈到面试,其实说白了就是刷题刷题刷题,天天作死的刷。。。。。
为了准备这个“金三银四”的春招,狂刷一个月的题,狂补超多的漏洞知识,像这次美团面试问的算法、数据库、Redis、设计模式等这些题目都是我刷到过的
并且我也将自己刷的题全部整理成了PDF或者Word文档(含详细答案解析)

66个Java面试知识点
架构专题(MySQL,Java,Redis,线程,并发,设计模式,Nginx,Linux,框架,微服务等)+大厂面试题详解(百度,阿里,腾讯,华为,迅雷,网易,中兴,北京中软等)

算法刷题(PDF)

64800506)]
算法刷题(PDF)
[外链图片转存中…(img-BkJMoNoK-1710364800507)]
本文探讨了Redis的RDB持久化机制,其可能丢失数据,而AOF机制通过记录每条写命令避免此问题。AOF文件会随时间增长,但可通过重写保持较小体积。通常两者结合使用以兼顾效率和数据安全。此外,作者提到面试准备中对Redis等相关知识的重视。
1490

被折叠的 条评论
为什么被折叠?



