redis基础篇~rdb详解

 
一简介:
    rdb是redis持久化策略的选择之一,让我们来一探究竟
二 核心设计思路
    核心思路:fork一个子进程,只有在父进程发生写操作修改内存数据时,才会真正去分配内存空间,并复制内存数据,而且也只是复制被修改的内存页中的数据,并不是全部内存数据,所以内存数据快照说法并不标准,应该来说是单位时间内改变的内存数据快照
三 CopyOnWrite(简称cow) 好处:
   1、减少分配和复制资源时带来的瞬时延迟;
   2、减少不必要的资源分配,假如整体资源是10G,redis现有使用率是5G,那么fork一个子进程拷贝rdb到磁盘并不是5G,而是改变数据的大小
四 CopyOnWrite的缺点:
    如果父子进程都需要进行大量的写操作,会产生大量的分页错误(页异常中断page-fault)
五 RDB参数
  0 save 900 1          15分钟->1 key
    save 300 10         5分钟->10 key
    save 60 10000    1分钟->1W key
 1 rdbcompression  默认打开 
 2 rdbchecksum 默认打开
 3 dbfilename dir 路径 名称 元数据 默认当前目录下
六 需要注意点
  1 rdb本身是二进制文件,不可手工进行读取
  2 rdb本身可以手动触发 save(阻塞型) bgsave(非阻塞型)
  3 rdb本身可以进行冷拷贝,在进行快照的过程中不会修改RDB文件,只有快照结束后才会将旧的文件替换成新的
  4 rdb的恢复效率是远远高于aof的
  5 rdb只有在单位时间内至少N个key改变才会生成快照
七  缺点
   1 rdb没办法做到实时备份,会丢失掉最后一次快照之后的数据
   2 rdb 的动作(生成快照,备份文件压缩 checksum)都会消耗cpu资源,快照本身也会消耗内存资源
 
 

原文地址:https://www.cnblogs.com/danhuangpai/p/14715422.html