redis 持久化之RDB与AOF

RDB 内存快照的方式

手动
save 命令,主进程阻塞,不能有修改操作访问
bgsave 命令,fork出一个子进程,fork期间主进程阻塞,,之后有COW,进行修改操作复制到副本中

自动
save m n m秒n个键发生变化,则触发持久化,通过bgsave
主从同步,全量同步时会自动触发bgsave命令

优点
速度快,数据重新恢复快
只包含一个dump.rdp文件,方便持久化
容灾性好,方便备份
性能最大化,通过fork子进程来完成写操作,主进程继续处理命令,实现IO最大化

缺点
数据安全性低,RDB是间隔一段时间进行持久化,如果发生故障,数据丢失严重
由于是fork子进程时会阻塞主进程,数据量很大时,会阻塞服务器较长时间,会占用CPU


AOF append追加修改命令日志文件方式

修改命令进行追加到AOF缓冲区,根据对应策略进行同步操作
策略:
每秒同步
每修改同步
不同步:由操作系统控制,可能丢失较多数据

优点
数据安全,最多只会有一条数据丢失
宕机也不会破坏已存在的内容,可以通过redis-check-aof工具解决数据一致性问题
AOF机制的rewrite模式,定期对AOF文件进行重写,以达到压缩的目的
当redis重启时,可以通过加载AOF文件进行数据恢复

缺点:
AOF文件比RDB文件大,且恢复速度慢
数据集大的时候,比RDB启动效率低
运行效率没有RDB高

#java求职#
全部评论
牛哇  最好拿个项目试试 练练手
点赞 回复 分享
发布于 2022-02-15 19:27

相关推荐

两个项目挑一个介绍一下,遇见了什么困难如何解决你刚才说用 udp 作为广播包为什么udp 和 tcp 区别 为什么不选 tcp我看你给每个线程建立了 tcpsocket 为什么多线程的 io 策略有哪些static 关键字介绍一下对局部变量加 static 有什么作用对函数加呢对全局变量加呢如果全局变量加 static 放在头文件里会有什么问题c++中堆和栈的区别有哪些栈比堆的速度快吗 为什么讲一下 inline智能指针有哪几个shared ptr 如何设计的shared 是线程安全的吗(我真是蠢 没复习到说了个不安全,豆包分的三个情况 修改引用计数安全 访问修改指向对象不安全要加锁 修改同一个实例不安全)让你用代码设计 shared ptr 怎么设计内存泄漏有可能哪些原因假如说现在测试跟你说程序 cpu 占用率高,如何排查是不是内存泄漏内存泄漏如何定位valgrind 介绍一下valgrind 的底层是什么原理(不会,动态二进制插桩)cpu 的三级缓存找工作太坎坷了,我实习是 c+的,看大家都学 java 就八月份开始一直投 java,国庆后想明白了才捡起来的 c+,希望一直努力准备,能有个满意的保底,实在不行就春招😂双非鼠鼠真的很感谢鹅厂给一次面试的机会(原来微信用的就是 qt5)
发面经攒人品
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务