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++学习-5

    1.static_cast静态转换<>要转换的类型,不适用于指针转换 reinterpret_cast<char*>()指针类型的转换 涉及到const,必须用const_ca ...

  2. 深入java虚拟机学习 -- 类的加载机制(三)

    类的初始化时机 在上篇文章中讲到了类的六种主动使用方式,反射是其中的一种(Class.forName("com.jack.test")),这里需要注意一点:当调用ClasLoade ...

  3. RHEL7 网卡绑定

     //bond(主要用于6系统) nmcli connection add type bond mode balance-rr con-name bond0 ifname bond0 ipv4.met ...

  4. 学习笔记-Little Tips_day20170615-"\n" and '\n'

    1.'\n'是字符 相当于char   占一个字节 "\n"是字符串 相当于char[2]   占两个字节 答案是ABC

  5. Canvas 画布组件(官网翻译)

    Canvas画布 The Canvas is the area that all UI elements should be inside. The Canvas is a Game Object w ...

  6. TCP 连接关闭及TIME_WAIT探究

    这里主要记录一下TCP连接在关闭的时刻,有哪些细节问题.方便在以后的程序设计中能够注意这些细节, 以避免出现这些错误.首先我们来看一下TCP的状态转换图.如<unix网络编程>卷一所示如下 ...

  7. 剑指Offer-孩子们的游戏(圆圈中最后剩下的数)

    package Other; import java.util.LinkedList; /** * 孩子们的游戏(圆圈中最后剩下的数) * 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友, ...

  8. 目标检测网络之 YOLOv2

    YOLOv1基本思想 YOLO将输入图像分成SxS个格子,若某个物体 Ground truth 的中心位置的坐标落入到某个格子,那么这个格子就负责检测出这个物体. 每个格子预测B个bounding b ...

  9. JAVA基础之序列化与反序列化

    序列化和反序列化: 把对象转化为字节序列的过程称为序列化: 把字节序列恢复为对象的过程称为对象的反序列化: 方法: Java.io.ObjectOutputStream代表对象的输出流,writeOb ...

  10. 线程池与Python中的GIL

    线程池是一个操作系统的概念,它是对多线程的一种优化. 多线程的时候,创建和销毁线程伴随着操作系统的开销,如果频繁创建/销毁线程,则会使效率大大降低. 而线程池,是先创建出一批线程放入池子里,需要创建线 ...