Redis的所有数据都是保存在内存中,然后不定期的通过异步方式保存到磁盘上(这称为“半持久化模式”);也可以把每一次数据变化都写入到一个append only file(aof)里面(这称为“全持久化模式”)。
由于Redis的数据都存放在内存中,如果没有配置持久化,redis重启后数据就全丢失了,于是需要开启redis的持久化功能,将数据保存到磁盘上,当redis重启后,可以从磁盘中恢复数据。redis提供两种方式进行持久化,一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)。

二者的区别

RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。


AOF持久化以日志的形式记录服务器所处理的每一个写、删除操作,查询操作不会记录,以文本的方式记录,可以打开文件看到详细的操作记录。

二者优缺点

RDB

优点

  1. 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这对于文件备份而言是非常完美的。比如,你可能打算每个小时归档一次最近24小时的数据,同时还要每天归档一次最近30天的数据。通过这样的备份策略,一旦系统出现灾难性故障,我们可以非常容易的进行恢复。

  2. 对于灾难恢复而言,RDB是非常不错的选择。因为我们可以非常轻松的将一个单独的文件压缩后再转移到其它存储介质上。

  3. 性能最大化。对于Redis的服务进程而言,在开始持久化时,它唯一需要做的只是fork出子进程,之后再由子进程完成这些持久化的工作,这样就可以极大的避免服务进程执行IO操作了。

  4. 相比于AOF机制,如果数据集很大,RDB的启动效率会更高。

缺点

  1. 如果你想保证数据的高可用性,即最大限度的避免数据丢失,那么RDB将不是一个很好的选择。因为系统一旦在定时持久化之前出现宕机现象,此前没有来得及写入磁盘的数据都将丢失。

  2. 由于RDB是通过fork子进程来协助完成数据持久化工作的,因此,如果当数据集较大时,可能会导致整个服务器停止服务几百毫秒,甚至是1秒钟。

AOF

优点

  1. 该机制可以带来更高的数据安全性,即数据持久性。Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步。事实上,每秒同步也是异步完成的,其效率也是非常高的,所差的是一旦系统出现宕机现象,那么这一秒钟之内修改的数据将会丢失。而每修改同步,我们可以将其视为同步持久化,即每次发生的数据变化都会被立即记录到磁盘中。可以预见,这种方式在效率上是最低的。至于无同步,无需多言,我想大家都能正确的理解它。

  2. 由于该机制对日志文件的写入操作采用的是append模式,因此在写入过程中即使出现宕机现象,也不会破坏日志文件中已经存在的内容。然而如果我们本次操作只是写入了一半数据就出现了系统崩溃问题,不用担心,在Redis下一次启动之前,我们可以通过redis-check-aof工具来帮助我们解决数据一致性的问题。

  3. 如果日志过大,Redis可以自动启用rewrite机制。即Redis以append模式不断的将修改数据写入到老的磁盘文件中,同时Redis还会创建一个新的文件用于记录此期间有哪些修改命令被执行。因此在进行rewrite切换时可以更好的保证数据安全性。

  4. AOF包含一个格式清晰、易于理解的日志文件用于记录所有的修改操作。事实上,我们也可以通过该文件完成数据的重建。

缺点

  1. 对于相同数量的数据集而言,AOF文件通常要大于RDB文件。RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。

  2. 根据同步策略的不同,AOF在运行效率上往往会慢于RDB。总之,每秒同步策略的效率是比较高的,同步禁用策略的效率和RDB一样高效。

常用配置

RDB持久化配置

Redis会将数据集的快照dump到dump.rdb文件中。此外,我们也可以通过配置文件来修改Redis服务器dump快照的频率,在打开6379.conf文件之后,我们搜索save,可以看到下面的配置信息:

save 900 1 #在900秒(15分钟)之后,如果至少有1个key发生变化,则dump内存快照。

save 300 10 #在300秒(5分钟)之后,如果至少有10个key发生变化,则dump内存快照。

save 60 10000 #在60秒(1分钟)之后,如果至少有10000个key发生变化,则dump内存快照。

AOF持久化配置

在Redis的配置文件中存在三种同步方式,它们分别是:

appendfsync always #每次有数据修改发生时都会写入AOF文件。

appendfsync everysec #每秒钟同步一次,该策略为AOF的缺省策略。

appendfsync no #从不同步。高效但是数据不会被持久化。

Redis持久化的方式相关推荐

  1. 峰Redis学习(8)Redis 持久化AOF方式

    第三节:Redis 的持久化之AOF 方式 AOF方式:将以日志,记录每一个操作 优势:安全性相对RDB方式高很多: 劣势:效率相对RDB方式低很多: 1)AOF方式需要配置: # Please ch ...

  2. 289-Redis(Redis持久化-RDB方式)

    1.持久化简介 什么是持久化? 利用永久性存储介质将数据进行保存,在特定的时间将保存的数据进行恢复的工作机制称为持久化. 为什么要进行持久化? 防止数据的意外丢失,确保数据安全性 保存的方式: ​RD ...

  3. Redis持久化实践及数据恢复

    2019独角兽企业重金招聘Python工程师标准>>> 参考资料: Redis Persistence http://redis.io/topics/persistence Goog ...

  4. Redis持久化实践及灾难恢复模拟

    Redis持久化实践及灾难恢复模拟 源地址:http://heylinux.com/archives/1932.html 另一篇:Redis主从自动failover http://ylw6006.bl ...

  5. Redis持久化-数据丢失及解决

    转载自 http://www.cnblogs.com/hs8888/p/5520495.html Redis的数据回写机制 Redis的数据回写机制分同步和异步两种, 同步回写即SAVE命令,主进程直 ...

  6. Redis持久化----浅谈RDB--AOF

    Java领域创作者:小小三郎,天天创作. RDB--AOF初识:看不懂的评论区留言. 注:文章使用的是Windows版Redis,Linux和Windows差不多. 目录 什么是数据持久化 Redis ...

  7. 【Redis】9.10.Redis持久化方式之RDBAOFAOF和RDB区别场景分析

    持久化简介 什么是持久化 利用永久性存储介质将数据进行保存,在特定的事件将保存的数据进行恢复的工作机制称为持久化 为什么要持久化 防止数据的意外丢失,确保数据安全性 持久化的过程保存什么 将当前数据状 ...

  8. Redis持久化方式的选择

    本文将介绍Redis持久化的两种方式:快照持久化和AOF持久化,并对两种方法进行分析和对比,方便在实际中做出选择. 持久化 什么是持久化 Redis所有数据保存在内存中,对数据的更新将异步地保存到磁盘 ...

  9. Redis持久化的几种方式——RDB深入解析

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群"加入公众号专属技术群 Redis 的读写都是在内存中,所以它的性能较高,但在内存 ...

  10. Redis持久化的几种方式——深入解析RDB

    Redis 的读写都是在内存中,所以它的性能较高,但在内存中的数据会随着服务器的重启而丢失,为了保证数据不丢失,我们需要将内存中的数据存储到磁盘,以便 Redis 重启时能够从磁盘中恢复原有的数据,而 ...

最新文章

  1. 吉他入门第一讲~~~~~右手弹奏基础
  2. 他爬取了B站所有番剧信息,发现了这些……
  3. 英特尔、联发科、展讯等开始支持开源的物联网轻量化操作系统AliOS Lite
  4. python新手输出错误,Python 新手常犯错误(第一部分)
  5. 一个35岁腾讯产品经理的忠告:在职场,这件事越早做越好
  6. spring mvc在Controller中获取ApplicationContext
  7. RePlugin 插件化方案学习
  8. 经典的同态滤波算法的优化及其应用参数配置。
  9. modulenotfounderror python_python程序在命令行执行提示ModuleNotFoundError: No module named 'XXX' 解决方法...
  10. 基于jmeter测试web接口,看完都说学会了
  11. Kaggle实战之食尸鬼、地精、鬼魂分类
  12. SQL Server 获取日期是星期周几(默认从周日开始到周六 1-7)
  13. sqlserver连接问题圣经
  14. H5标签在页面被转译
  15. 一文揭开图机器学习的面纱,你确定不来看看吗
  16. 【golang】go app 优雅关机 Graceful Shutdown How?
  17. 论文研究12:DUAL-PATH RNN for audio separation
  18. 小白安装cadence virtuoso
  19. 酷炫机器人简笔画图片_卡通机器人简笔画图片
  20. 关于计算机的优点英语作文,初三英语作文电视电脑的优缺点

热门文章

  1. 面试题之对象创建的五种方式
  2. spring源码:循环依赖源码学习
  3. Redis的高级应用-安全性和主从复制
  4. 双目视觉图像的色彩调整
  5. 虚拟化技术中,不同层级结构间的虚拟化运用
  6. Java锁--CyclicBarrier
  7. 一步完成 MySQL 向 Redis 迁移
  8. 设置windows自动登录
  9. IBM中低端存储解决方案
  10. MOSS User Profile(三):查看用户配置文件修改历史