redis的运维过程中,我们对数据持久化做一个基本的总结。
1什么是持久化: redis 所有数据保持在内存中,对数据的更新将异步地保存到磁盘上.
  RDB 文件创建的过程是直接从内存 写入到我们我磁盘文件(二进制的方式)redis 读取RDB 文件的时候是从硬盘读取二进制文件到内存
 
    注明:以下2个图片都是来源与网络,版权属于原来的作者
    

 
2 持久化的方式:快照方式(RDB)、 写日志方式(AOF)
  RDB优点:RDB 是一个紧凑压缩的二进制文件,是某一个时间点的快照数据,适合做备份,全量复制等场景。比如每个固定时间点把RDB 文件拷贝到远程机器或者文件系统(HDFS) 用于灾备
  redis 加载RDB恢复数据要快于AOF的方式
  RDB缺点:RDB 方式数据没有办法做到实时持久化/妙级持久化,因为bgsave的每次运行都要执行fork操作创建子
  进程,属于重量级别操作。频繁执行成本比较高。老版本呢的RDB 文件没有办法兼容新版本的RDB文件
 
 
 
3 RDB 优化配置
优化RBD文件的配置的优化,首先要禁止系统自动的保存方式。
dbfilename dump-${port}.rdb
dir /bigdiskpath
stop-writes-on-bgsave-error yes:在bgsave执行出错时,阻止前面的请求,默认是true
rdbcompression yes:是否对RDB文件进行压缩,默认是yes
rdbchecksum yes:     是否对rdb文件进行校验,默认是yes
 
 
 4 通过save(内存较大的实例会阻塞基本已经废弃) 命令实现持久化
  • 客户端发送save 命令
  • 服务器端收到命令并执行后,会阻塞客户端的请求
   通过bgsave(创建子进程,子进程只会很短时间的阻塞)命令可以在命令执行触发:命令行执行bgsave,立即触发执行
  • save seconds ops即:在seconds 秒内发生在ops次数据变化就会触发RDB 持久化操作
  • save 900 1 代表 在900秒内有一次数据变更操作就触发持久化
  • 可以同时配置多条触发条件
 
通过bgsave 命令
  • 通过fork一个子进程进行保存操作,所以bgsave不会阻塞客户端请求
  • 父进程负责处理客户端请求,父子进程通过fork的copy on write技术进行数据同步
  • 在bgsave 执行期间,客户端发送的save和bgsave命令将会被拒绝
  • bgrewriteaof 命令和bgsave命令不能同时执行,如果此时正执行bgsave命令,则只有执行完成后才会接着执行bgrewiteaof
原理:
   redis有一个周期性函数每隔100ms 执行一次,次函数名叫servercron,此函数的其中一个检测项就是save配置
  服务器维护两个属性,dirty即上次保存后数据库发生多少次操作,lastsave,即上次执行操作的时间
 
 
 
 以上总结有不当之处可以给我发邮件chenzhaoguang00#126.com ,文中2个图片流程图来源网络,版权属于原作者,如果涉及侵权请告知。文字内容属于博客作者自己整理,转载注明来源
 
 
 
 
 

redis 持久化之 RDB的更多相关文章

  1. Redis 持久化之RDB和AOP

    Redis 持久化之RDB和AOP Redis 有两种持久化方案,RDB (Redis DataBase)和 AOP (Append Only File).如果你先快速了解和使用RDB和AOP,可以直 ...

  2. Redis 持久化之RDB和AOF

    Redis 持久化之RDB和AOF Redis 有两种持久化方案,RDB (Redis DataBase)和 AOF (Append Only File).如果你想快速了解和使用RDB和AOF,可以直 ...

  3. 详解Redis持久化(RDB和AOF)

    详解Redis持久化(RDB和AOF) 什么是Redis持久化? Redis读写速度快.性能优越是因为它将所有数据存在了内存中,然而,当Redis进程退出或重启后,所有数据就会丢失.所以我们希望Red ...

  4. redis持久化(RDB、AOF、混合持久化)

    redis持久化(RDB.AOF.混合持久化) 1. RDB快照(snapshot) 在默认情况下, Redis 将内存数据库快照保存在名字为 dump.rdb 的二进制文件中. 你可以对 Redis ...

  5. Redis学习——Redis持久化之RDB备份方式保存数据

    从这一个介绍里面知道,redis比memcache作为缓存数据库强大的地方,一个是支持的数据类型比较多,另一个就是redis持久化功能. 下面就介绍Redis的持久化之RDB! 一:什么是redis的 ...

  6. Redis持久化之RDB

    本文及后续文章,Redis版本均是v3.2.8 上篇文章介绍了RDB的优缺点,我们先来回顾下RDB的主要原理,在某个时间点把内存中所有数据保存到磁盘文件中,这个过程既可以通过人工输入命令执行,也可以让 ...

  7. Redis持久化之RDB&&AOF的区别

    在说Redis持久化之前,需要搞明白什么是数据库状态这个概念,因为持久化的就是将内存中的数据库状态保存到磁盘上.那么什么是数据库状态呢?Redis是一个key-value数据库服务器,一般默认是有16 ...

  8. 【Redis】Redis学习(七) Redis 持久化之RDB和AOF

    Redis 持久化提供了多种不同级别的持久化方式:一种是RDB,另一种是AOF. RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF ...

  9. redis——持久化方式RDB与AOF分析

    https://blog.csdn.net/u014229282/article/details/81121214 redis两种持久化的方式 RDB持久化可以在指定的时间间隔内生成数据集的时间点快照 ...

随机推荐

  1. jstl的表达式不能解析

    问题:配置问题 解决:web.xml中添加环境的配置,环境配成2.4的版本就ok了 <web-app xmlns="http://java.sun.com/xml/ns/j2ee&qu ...

  2. Problem : 1013 ( Digital Roots )

    tips:分析不够仔细,白费了许多功夫.输入数据的范围,平时几乎很少考虑的,这个以后得注意.代码检查不够仔细啊,以后得注意了 #include<iostream> using namesp ...

  3. 所使用的“EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”版本高于所引用的程序集“EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089”的版本

    错误信息:所使用的"EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&qu ...

  4. mySQL的安装和基础使用及语法教程

    mySQL的安装和基础使用及语法指南 一.MySQL的安装.配置及卸载 1.安装 2.配置 3.mySQL5.1的完全卸载 4.MYSQL环境变量的配置 二.MySQL控制台doc窗口的操作命令 1. ...

  5. POST方式提交乱码解决

    乱码的问题比较常见,确保各地方的编码格式均统一是保证不出现乱码的必要条件,但还是常会有编码都统一了仍然出现乱码的情况. 第一步: 确认JSP页面头部是否有: <%@ page contentTy ...

  6. linux下安装软件

    业界的软件标准安装有三步:configure,make,make install,下面是它们的定义: ./configure是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不 ...

  7. 06_java 时间获取练习_Date\SimpleDateFormat\Calendar类练习

     1.获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08 import java.text.SimpleDateFormat; import java.uti ...

  8. spring Boot+spring Cloud实现微服务详细教程第一篇

    前些天项目组的大佬跟我聊,说项目组想从之前的架构上剥离出来公用的模块做微服务的开发,恰好去年的5/6月份在上家公司学习了国内开源的dubbo+zookeeper实现的微服务的架构.自己平时对微服务的设 ...

  9. Django+xadmin打造在线教育平台(六)

    九.课程章节信息 9.1.模板和urls 拷贝course-comments.html 和 course-video.html放入 templates目录下 先改course-video.html,同 ...

  10. 【Flask】 利用uWSGI和Nginx发布Flask应用

    因为Flask比较容易上手,之前也拿flask写过几个小项目,不过当时天真地以为只要在服务器上nohup跑一个python脚本就算是成功发布了这个flask项目.实际上这还面临很多问题,比如并发性不好 ...