Rdb eq 快照redis
其实就是将数据保存至硬盘内!(本身理解)数据库
操做实现快照app
1.执行save(该方法会组织客户端的操做直到完成快照后再次放行)异步
1.Redis执行save方法code
2.在运行目录下生成dump.rdbserver
2.1.复制dump.rdb文件内容,建立dump_1.rdb文件将dump.rdb内容放进去blog
3.执行FLUSHALL 清空数据库,执行shutdown 关闭数据库同步
4.更换dump_1.rdb 文件名称 为dump.rdb (Linux更新文件名称mv - dump_1.rdb dump.rdb)class
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.启动后会发现数据已完成恢复