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. console.log 简写

    console.log 简写 平常代码调试总会用到console.log,但是每次写这么长也是很麻烦,就想着存一个简介一点的变量: 然后就随手写了下面代码: var a = 10; var log = ...

  2. 数据分析之Pandas和Numpy学习笔记(持续更新)<1>

    pandas and numpy notebook        最近工作交接,整理电脑资料时看到了之前的基于Jupyter学习数据分析相关模块学习笔记.想着拿出来分享一下,可是Jupyter导出来h ...

  3. 【python学习笔记】3.字符串使用

    [python学习笔记]3.字符串使用 字符串是一种序列,素有标准的序列操作对字符串用样适用,字符串是不可以改变 格式化操作符,%,左侧是格式化字符串,右侧是被格式的值,可以是一个值.元组.字典 数值 ...

  4. vscode前端常用插件推荐,搭建JQuery、Vue等开发环境

    vscode是微软开发的的一款代码编辑器,就如官网上说的一样,vscode重新定义(redefined)了代码编辑器.当前市面上常用的轻型代码编辑器主要是:sublime,notepad++,edit ...

  5. WordPress设置圆形旋转头像的方法

    很多网站的评论者的头像都是圆形的,并且当你的鼠标移上去的时候会旋转,那么这个怎么实现呢,我在网上找了很多,但是和我的主题都不适用,现在把我修改后的代码贴出来,只要将下面的代码添加到style.css中 ...

  6. Cesium 获取鼠标当前位置的模型高度,地形高度,OSGB高度,及其经纬度。

    var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene._imageryLayerCollection);var ray,posit ...

  7. 从Socket入门到BIO,NIO,multiplexing,AIO

    Socket入门 最简单的Server端读取Client端内容的demo public class Server { public static void main(String [] args) t ...

  8. java基础学习系列一

    判断语句 1,if条件判断语句 if(){} if(){} else{} if(){}else if(){} else() if判断一共这3张情况.if后面的值是boolen类型 2,switch条件 ...

  9. React简明学习

    前面的话 React让组件化成为了前端开发的基本思路,比传统思路可以更好的控制前端复杂度,旧的开发方法受到了影响,如分离式的HTML/CSS.非侵入式JS.模板语言.MVC.CSS文件.Bootstr ...

  10. CSS 剩余宽度和高度完全填充

    <html><head><meta http-equiv="Content-Type" content="text/html; charse ...