zoukankan      html  css  js  c++  java
  • redis两种持久化机制

      两种持久化机制是RDB和AOF机制,下面介绍下是什么和优缺点。


      RDB持久化是指用数据集快照的方式记录redis数据库的所有键值对。

      两个命令:SAVE命令会阻塞主进程来完成写文件,BGSAVE命令会创建子进程来完成写文件,主进程会继续处理命令。

      优点:

      1.只有一个文件dump.rdb,方便持久化。

      2.容灾性好,一个文件可以保存到安全的磁盘。

      3.性能最大化,fork子进程来完成写操作,让主进程继续处理命令,所以是IO最大化。

      4.相对于数据集大时,比AOF的启动效率更高。

      缺点:

      1.数据安全性低,通过配置save参数来达到定时的写快照,比如 每900 秒有1个键被修改就进行一次快照,每600秒至少有10个键被修改进行快照,每30秒有至少10000个键被修改进行记录。所以如果当服务器还在等待写快照时出现了宕机,那么将会丢失数据。

      2.fork子进程时可能导致服务器停机1秒,数据集太大。


      AOF持久化是指所有的命令行记录以redis命令请求协议的格式保存为aof文件。

      优点:

      1.数据安全,aof持久化可以配置appendfsync属性,有always,每进行一次命令操作就记录到aof文件中一次;everySec,就是每秒内进行一次文件的写操作;no就是不进行aof文件的写操作。

      2.通过append模式写文件,即使中途服务器宕机,可以通过redis-check-aof工具解决数据一致性问题。

      3.AOF机制的rewrite模式,用来将过大的aof文件缩小,实现原理是将所有的set 通过一句set 命令总结,所有的SADD命令用总结为一句,这样每种命令都概括为一句来执行,就可以减少aof文件的大小了。(注意,在重写的过程中,是创建子进程来完成重写操作,主进程每个命令都会在AOF缓冲区和AOF重写缓冲区进行保存,这样旧版aof文件可以实现数据最新,当更新完后将重写缓冲区中的数据写入新的aof文件中然后就可以将新的文件替换掉旧版的文件。

      缺点:

      1.文件会比RDB形式的文件大。

      2.数据集大的时候,比rdb启动效率低。

    当然本文是根据自己看书和参考其他博客中的内容总结而写的(http://www.cnblogs.com/stephen-liu74/archive/2012/04/02/2365017.html)。

  • 相关阅读:
    Oracle学习笔记:oracle的表空间管理和sqlserver的文件组对比
    Oracle学习笔记:一个特殊的ORA12541错误原因
    Oracle学习笔记:通过种子数据库设置dbid为指定值
    Oracle学习笔记:使用rman duplicate {to|for} 创建数据库
    Oracle学习笔记:利用rman数据库备份,手工创建clone数据库
    使用Cufon技术实现Web自定义字体
    分享七个非常有用的Android开发工具和工具包
    60佳灵感来自大自然的网页设计作品欣赏
    20个独一无二的图片滑动效果创意欣赏
    40个幻灯片效果在网页设计中的应用案例
  • 原文地址:https://www.cnblogs.com/bamaofan/p/5284014.html
Copyright © 2011-2022 走看看