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.启动后会发现数据已完成恢复