前言:
redis持久化方式分为两种:RDB快照和AOF方式(默认为RDB模式),当Redis服务器重启的时候,会自动恢复数据,优先从AOF中恢复,其次才从RDB中恢复
 
一、RDB快照模式
RDB方式原理:当redis需要做持久化时(执行SAVA或者BGSAVA命令,或者是达到配置条件时执行),redis会fork一个子进程,子进程将数据写到磁盘上一个临时RDB文件中,当子进程完成写临时文件后,将原来的RDB替换掉(默认文件名为dump.rdb)
 
RDB备份条件和命令:
1、执行SAVE命令,在当前线程执行,会卡住
2、执行BGSAVE命令,在后台线程执行,马上返回
3、当符合用户给定的配置条件时Redis会自动将内存中的所有数据进行快照并存储在硬盘上。由两个参数构成:时间和改动的键的个数。当在指定的时间内被更改的键的个数大于指定的数值时就会进行快照,在配置文件redis.conf中已经预置了3个条件:
save 900 1 # 900秒内有至少1个键被更改则进行快照 save 300 10 # 300秒内有至少10个键被更改则进行快照 save 60 10000 # 60秒内有至少10000个键被更改则进行快照
 
RDB优缺点:
定时备份,Redis效率高,但是容易造成数据丢失,丢失的多少和备份策略有关,例如:5分钟备份一次,但是第8分时宕机了,那么就丢失了后面的3分钟数据
 
一、AOF模式
AOF方式原理:AOF就可以做到全程持久化,Redis每执行一个修改数据的命令,都会把这个命令添加到AOF文件中,当Redis重启时,将会读取AOF文件进行“重放”以恢复到 Redis关闭前的最后时刻。
由于os会在内核中缓存 write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。不过我们可以通过配置文件告诉redis我们想要 通过fsync函数强制os写入到磁盘的时机。有三种方式如下(默认是:每秒fsync一次)
appendonly yes              //启用aof持久化方式
# appendfsync always      //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec     //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐
# appendfsync no    //完全依赖os,性能最好,持久化没保证
 
AOF优缺点
AOF基本可以保证数据不丢失,但是AOF持久化文件会变的越来越大。例如我们调用incr test命令100次,文件中必须保存全部的100条命令,其实有99条都是多余的。

最新文章

  1. CozyRSS开发记录5-订阅列表栏里的项
  2. 纯js开发防win7日历控件
  3. CUBRID学习笔记 46 PREPARED set Do
  4. rsync安装使用
  5. Codevs 1535 封锁阳光大学
  6. ORA-00054:资源正忙,要求指定NOWAIT
  7. Linux Centos 使用 yum 安装java
  8. # electron-vue 尝试做个网易云音乐
  9. 通过 bsondump 命令工具 解析备份产生的bson文件
  10. UnityEditorWindow自建窗口扩展
  11. linux下用命令安装node&pm2
  12. linux 清空历史命令
  13. Sagheer and Nubian Market CodeForces - 812C (二分)
  14. is not in the sudoers file解决方法
  15. hadoop-hdfs编程
  16. java JVM指令2
  17. SDN前瞻 软件定义网络的一些概念
  18. class对象存储
  19. NetEaseGame/ATX 的MD
  20. Eclipse 4.5插件安装以及其他设置

热门文章

  1. HDU1576 A/B
  2. BZOJ1345 Baltic2007 序列问题Sequence 【思维题】*
  3. BZOJ4150 AMPPZ2014 The Staging 【线段树】*
  4. BZOJ3730 震波 【动态点分治】*
  5. 快速学习MD5的方法
  6. LeetCode Find Permutation
  7. Android 使用adb查看和修改电池信息
  8. JAVA Debug 调试代码
  9. 贴一段demo代码,演示channel之间的同步
  10. (转)Inno Setup入门(七)——提供安装语言选项