Redis的持久化机制及优缺点

Redis在我们日常开发中是必不可少的,但是有可能会造成数据的丢失,因此就有了持久化机制,而 Redis的持久化机制也是面试中的高频问题,决定整理一下;如有错误还请个位指正!

文章目录

  • Redis的持久化机制及优缺点
  • 什么是Redis持久化?
  • RDB
  • AOF
  • RDB和AOF的对比

什么是Redis持久化?

Redis持久化就是把内存的数据写到磁盘中去,防止服务宕机了内存数据丢失;

Redis提供两种持久化机制RDB(默认)和AOF机制;

RDB

RDB(Redis DataBase缩写快照)是Redis默认的持久化方式。按照一定的时间将内存的数据以快照的形式保存到硬盘中,对应产生的数据文件为dump.rdb。通过配置文件中的save参数来定义快照的周期;记录Redis数据库的所有键值对,在某个时间点将数据写入一个临时文件持久化结束后,用这个临时文件替换上次持久化的文件达到数据恢复

优点:

  1. 只有一个文件 dump.rdb,方便持久化;
  2. 容灾性好,一个文件可以保存到安全的磁盘;
  3. 性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了Redis的高性能;
  4. 相对于数据集大时,比 AOF 的启动效率更高;

缺点:

  1. 数据安全性低;
  2. RDB 是间隔一段时间进行持久化,如果在持久化时Redis发生故障,会发生数据丢失。所以这种方式更适合数据要求不严谨的时候;

AOF

AOF持久化(即Append Only File持久化),是将Redis执行的每次写命令记录到单独的日志文件中,当重启Redis会重新将持久化的日志中文件恢复数据。当两种方式同时开启时数据恢复Redis会优先选择AOF恢复

优点:

  1. 数据安全,AOF持久化可以配置 appendfsync 属性,有always属性,每进行一次命令操作就记录到AOF文件中一次;
  2. 通过append模式写文件,即使中途服务器宕机,可以通过 redis-check-aof 工具解决数据一致性问题;
  3. AOF机制的rewrite模式。AOF文件没被 rewrite 之前(文件过大时会对命令 进行合并重写),可以删除其中的某些命令(比如误操作的 flushall);

缺点:

  1. AOF文件比RDB文件大,且恢复速度慢;
  2. 数据集大的时候,比RDB启动效率低;

RDB和AOF的对比

  • AOF文件比RDB更新频率高,优先使用AOF还原数据;
  • AOF比RDB更安全也更大;
  • RDB性能比AOF好;
  • 如果两个都配了优先加载AOF;

【面试常问】Redis的持久化机制是什么?各自的优缺点?相关推荐

  1. 一文带你详解Redis常用的数据类型以及面试常碰到的数据持久化机制原理

    前言 关于Redis的知识点总结了一个思维导图分享给大家: 简介 Redis是一种面向"key-value"类型数据的分布式NoSQL数据库系统,支持五种数据类型格式:** Str ...

  2. Redis面试常问-- Redis常用数据类型

    Redis常用数据类型 http://www.redis.cn/

  3. 面试官:能说说Redis的持久化机制吗?

    我们先来看这么一段面试场景-- 面试官:你们项目缓存技术用到了什么缓存技术? 小帅:Redis 面试官:那么问一下,Redis缓存技术用到的持久化机制是哪一种机制? 小帅:AOF 面试官:好吧,回去等 ...

  4. Redis面试 - Redis的持久化机制

    Redis面试 - Redis的持久化机制 面试题 redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 面试官心理分析 redis 如果仅仅只是将数据缓 ...

  5. Redis面试常问3 如何实现分布式锁 记住Redis的原子性

    Redis面试常问3 如何实现分布式锁 上面的伪代码有问题 从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改: http://redisdoc.com/string ...

  6. Redis数据持久化机制AOF原理分析一---转

    http://blog.csdn.net/acceptedxukai/article/details/18136903 http://blog.csdn.net/acceptedxukai/artic ...

  7. 给大家提供一些面试常问的问题

    给大家提供一些面试常问的问题 1. 简述 private. protected. public. internal 修饰符的访问权限. 答 . private :     私有成员, 在类的内部才可以 ...

  8. Java面试常问计算机网络问题

    转载自   Java面试常问计算机网络问题 一.GET 和 POST 的区别 GET请注意,查询字符串(名称/值对)是在 GET 请求的 URL 中发送的:/test/demo_form.asp?na ...

  9. servlet面试常问问题_50个Servlet面试问答

    servlet面试常问问题 Servlet是Java EE的一个非常重要的主题,所有Web应用程序框架(例如Spring和Struts)都建立在它之上. 这使servlet成为Java访谈中的热门话题 ...

  10. 执行一次怎么会写入两次数据_Java进阶知识:一文详解缓存Redis的持久化机制,新手看完也会用

    Redis 的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证 Redis 的数据不会因为故障而丢失,这种机制就是 Redis 的持久化机制. Redis有两种持久化的方式: ...

最新文章

  1. Python回顾与整理5:映像和集合类型
  2. 邪恶的三位一体:机器学习、黑暗网络和网络犯罪
  3. [转]FFT倒序算法—雷德算法
  4. 浙江大学计算机基础上机实验答案,2015年浙江大学远程教育计算机基础知识题及参考答案(2)...
  5. Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.ClassVisitor
  6. IDFA的值什么时候会发生改变
  7. 关于Unity3D中函数说明
  8. 用python绘制一条直线_python绘制直线的方法
  9. SpringCloud分布式开发五大神兽
  10. Java 并发编程 --- ThreadPoolExecutor(五)
  11. 音视频编解码:NVIDIA Jetson Linux Multimedia API(总结)
  12. liunx apache 的安装
  13. 计算机论文格式要求吗,论文格式
  14. cocosbuilder3.0使用小记
  15. java中分解json数据,java解析JSON数据详解
  16. 如何将Web of Science中的题录及文章导入NoteExpress?
  17. 健身android源码,Android健身饮食记录助手
  18. Python基础速成笔记(1)(适合有C/C++的基础)
  19. android 第三方视频库,android视频播放库
  20. PS制作透明的BMP图片

热门文章

  1. 成语小秀才小程序V2.0.14完整安装包+小程序前端,小程序吸粉引流源码
  2. excel怎么打钩(excel怎么打钩符号)
  3. win10 如何启用虚拟化 Hyper-V
  4. APICloud 入门教程窗口篇
  5. 大数据Hadoop技术的发展历史与未来前景
  6. SSRF漏洞原理及检测
  7. Vue todos代办事项功能
  8. hp laserjet1010 win7 64打印慢问题
  9. 996,活着抑或死亡
  10. EasyChair提交会议论文的方法简介