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. mysql方言不支持blob类型解决方案

    package com.gstone.history.entity; import java.sql.Types; import org.hibernate.Hibernate; import org ...

  2. struct 2 基本知识

    (最近在写一个ssh的项目,虽然看网上好像都说ssh已经过气了...之前虽然老师有上过这个课,我还做了一个PPT专门讲这个来着,但果然没有实践经验还是不容易理解.在参照一个项目写ssh时候,表示四脸蒙 ...

  3. 通过返回动态改变textview和imageview

    //获取并显示优惠券ID Intent intent = getIntent(); awardID=(TextView)findViewById(R.id.awardID); String id = ...

  4. MySQL数据库索引简介

    一.索引的含义和特点     索引是一个单独的.存储在磁盘上的数据库结构,他们包含着对数据表里所有记录的引用指针.使用索引用于快速找出某个或多个列中有一特点值的行,所用MySQL列类型都可以被索引,对 ...

  5. 使用Python从Workflowy同步大纲到印象笔记

    title: 从Workflowy到印象笔记 toc: true comment: true date: 2018-03-17 10:05:54 tags: ["Python", ...

  6. Scala学习笔记(二)

    Scala面向对象: 类: 声明类(一个源文件中可以包含很多public的类) getter和setter 构造函数(主构造器和附属构造器) 继承(extends) 重写父类方法(override d ...

  7. PAT乙级-1056. 组合数的和(15)

    给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字.要求所有可能组合出来的2位数字的和.例如给定2.5.8,则可以组合出:25.28.52.58.82.85,它们的和为330. 输入 ...

  8. A+B for Input-Output Practice (VI)

    #include<iostream> using namespace std; void main() { int b,c,sum=0; while(scanf("%d" ...

  9. 共享MFC自绘Listctrl代码

    在别人代码基础上修改的ListCtrl,支持设置行高,header高度,header背景图,奇偶行不同背景色, 支持设置某列为Checkbox,Edit,Combobox, 支持自定义排序. 效果图如 ...

  10. 笔记:Eclipse 安装 m2eclipse 插件

    M2eclipse 插件 Eclipse 下一款十分强大的 Maven 插件,可以访问 http://m2eclipse.sonatype.org 了解更多该项目的信息,如果需要安装该插件可以按照如下 ...