zoukankan      html  css  js  c++  java
  • 缓存使用-4、Redis 持久化机制

    一、redis启动时载入持久化文件的流程。

    二、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启动效率低。

  • 相关阅读:
    动态规划——Best Time to Buy and Sell Stock IV
    动态规划——Split Array Largest Sum
    动态规划——Burst Ballons
    动态规划——Best Time to Buy and Sell Stock III
    动态规划——Edit Distance
    动态规划——Longest Valid Parentheses
    动态规划——Valid Permutations for DI Sequence
    构建之法阅读笔记05
    构建之法阅读笔记04
    构建之法阅读笔记03
  • 原文地址:https://www.cnblogs.com/chenxiaoxian/p/10426939.html
Copyright © 2011-2022 走看看