Redis 实例是否可以配置为不覆盖旧快照?

Can a Redis instance be configured to NOT overwrite old snapshots?

目前我正在使用 redis.conf 文件为我的实例提供固定目录和文件名以保存 redis dump.rdb 快照。

我的目的是比较不同时间拍摄的两个redis快照。 但是 Redis 在创建新转储文件后会重写旧的转储文件。

我检查了 github 上的 redis 存储库并找到了 rdb.c 文件,其中包含执行 SAVE 命令并重写旧快照的代码。

在搞乱代码之前(因为我不是一个有经验的开发者),我想问一下是否有更好的方法来保存不同时间拍摄的快照?或者我是否可以一次只保存最后 2 个快照?

您可以使用incron查看转储目录并执行脚本

sudo apt-get install incron
echo "redis" >> /etc/incron.allow

export EDITOR=vi
incrontab -e

/path/where/you/dump/files IN_CLOSE_WRITE,IN_CREATE,IN_DELETE /bin/copy_snapshot

然后创建一个 /bin/copy_snapshot 脚本文件,用日期或其他名称重命名它,并确保有 X 份副本