Rdb  eq  快照

  其实就是将数据保存至硬盘内!(自己理解)

操作实现快照

  1.执行save(该方法会组织客户端的操作直到完成快照后再次放行)

    1.Redis执行save方法

    2.在运行目录下生成dump.rdb

      2.1.复制dump.rdb文件内容,创建dump_1.rdb文件将dump.rdb内容放进去

    3.执行FLUSHALL 清空数据库,执行shutdown 关闭数据库

      4.更换dump_1.rdb 文件名称 为dump.rdb (Linux更新文件名称mv - dump_1.rdb dump.rdb)

    5.执行 redis-server ../redis.conf 

    6.keys * 你会惊喜的发现原flushall之前的数据又会存在啦

    7.因为执行完flushall后,后台默认执行bgsave方法保存快照所以要创建 dump_1.rdb文件来存储之前的文件

  2.bgsave在后台异步进行快照

    操作步骤如save一致。

  3.系统配置自定义快照存储操作。

    

 Aof(append Only File)

  作用和 rdb类似,aof相当于将一切非查询操作的语句都进行存储

  当启动redis-server时会加载appendonly.aof文件 

  当appendonly.do和dump.rdb同时存在 根据redis.conf配置文件内 appendonly属性进行判断加载 如果appendonly属性等于yes 加载appendOnly.conf不加载dump.rdb文件

 appendonly属性默认为 no 。以下是截图(appendfilename是指对appendonly.aof文件重命名建议不要修改)    

              

 

appendfsyn是保存策略取值范围

always:总是写入aof文件,并完成磁盘同步
everysec:每一秒写入aof文件,并完成磁盘同步 默认
no:写入aof文件,不等待磁盘同步。

  

实例:

  1.执行flushall命令清空redis库,再次查询所有key时为空

  

  2.关闭redis服务

  

  3.查询当前文件夹内容,存在一个appendonly,aof 和 dump.rdb文件,为了试验数据确实是从appendonly,aof文件中读出的,将dump.rdb文件删除

  4.删除后的内容

  

  5.从新启动redis-server,查询redis发现数据是空的

  

  6.上面说过appendonly.aof文件会存储除查询之外的所有操作,我们打开appendonly.aof文件查看下文件内容翻到最后会发现他连flushall操作都记录了所以导致上面查询数据时,返回为空。

  

  7.将flushall删除,并随便输入一些内容这一步是为了对redis-check-aof进行使用

  

  8.启动redis-server服务链接redis发现链接不上

  

  9.这个是因为我们在appendonly.aof文件内修改了加入了错误内容导致服务不能正常启动,修复方法(redis-check-aof --fix appendonly.aof命令进行修复,修复完成后再次启动)

  

  10.启动后会发现数据已完成恢复