结论:要恢复删除的key,前提是需要开启aof持久化策略;在开启aof持久化策略的情况下,删不删除rdb文件没有关系。
因为:redis恢复机制,即在开启aof并且存在文件的情况下,优先从aof文件中恢复
- 如果只配置 AOF ,重启时加载 AOF 文件恢复数据;
- 如果同时配置了 RDB 和 AOF ,启动是只加载 AOF 文件恢复数据;
- 如果只配置 RDB,启动是将加载 dump 文件恢复数据。
附:
https://www.alibabacloud.com/help/zh/apsaradb-for-redis/latest/backup-and-restoration-solutions?spm=a2c63.p38356.0.0.2ae942d6CYKMPH#section-nr6-ei4-yiu
1.开启aof和rdb持久化策略
appendonly yes
appendfilename "appendonly.aof"
// rdb默认开启,可以配置调整参数
save 900 1
save 300 10
save 60 10000
连接redis后,造些测试数据:
set james_test 123
通过save命令产生redis rdb备份文件,通过config set appendonly yes会产生aof文件;
打开rdb文件查看内容:
打开aof文件查看内容:
删除刚才创建的key:
del james_test
此时我们再看aof文件中多了些东西:
最后5行解析:
*2 // 代表del james_test总共分为两部分
$3 // $3代表接下来是个字符串,长度为3
del // 字符串del,长度为3
$10 // $1代表接下来是个字符串,长度为10
james_test // 字符串james_test,长度为10
而rdb文件内容不变:
把aof文件中del以及后面的内容删掉并保存:
然后重启redis,查看刚才的key: