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. C#封装程序集属性方法注释说明

    一.使用封装程序集好处: 在很多分布式应用程序开发中,针对每一种功能可能条用的接口不一样,往往习惯将需要被调用的接口,封装成DLL给调用方应用后使用,这样既规范了调用的方式,又避免了调用出现参数请求方 ...

  2. Lintcode249 Count of Smaller Number before itself solution 题解

    [题目描述] Give you an integer array (index from 0 to n-1, where n is the size of this array, data value ...

  3. 怎么解决VMware“该虚拟机似乎正在使用中”问题

    问题如下:

  4. Linux环境下安装配置Node.js

    1.在官网查看版本,LTS代表长期支持的版本 2.进入服务器 3.输入命令:·wget https://npm.taobao.org/mirrors/node/v8.9.3/node-v8.9.3-l ...

  5. @Controller 类中初始化问题解决办法

    在Controller类中常常遇到有些参数需要初始化,甚至有些只允许初始化一次,而Controller类不像servelet类可以调用init()函数进行初始化,这里想到的办法是设置标记值,让初始化部 ...

  6. 兄弟连PHP培训教你提升效率的20个要点

    兄弟连PHP培训教你提升效率的20个要点 用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则 不会,注意:只有echo能这么做,它是一种可以把多个字 ...

  7. 1-1 spring基础

    1.spring是一个开源的轻量级的应用开发框架,它提供了IOC(Inversion of Control控制反转)和AOP(Aspect -Oriented Programming 面向切面编程)的 ...

  8. C++实验1

  9. 笔记:Jersey REST 传输格式-XML

    XML类型是使用最广泛的数据类型,Jersey 对XML类型的数据处理,支持Java领域的两大标准,即JAXP(Java API for XML Processing,JSR-206)和JAXB(Ja ...

  10. 【Linux】 文本比较工具 diff和cmp

    Linux 文本比较工具 ■ diff命令 diff用于逐行比较两个文本文件,列出其不同之处 diff [option] <file1> <file2> file1和file2 ...