上下文描述
Linux 发行版包含 redis-server 6.0.5。Redis 配置为使用持久性AOF
(仅附加文件)并且RDB
持久性被禁用。
在启动时,脚本请求 redis-server 执行BGREWRITEAOF
命令。此请求启动一个进程(使用 PID= ),该进程在写入文件的同一数据 Redis 路径中<pid>
创建一个文件。temp-rewriteaof-<pid>.aof
appendonly.aof
这是BGREWRITEAOF
命令的正常工作。该命令的有用性已通过它在这篇文章中所写的内容得到证明。
有什么问题
BGREWRITEAOF
当系统在未完成时关闭时出现问题。在这种情况下,文件temp-rewriteaof-<pid>.aof
在重新启动时仍然存在,并且占用了磁盘空间。
因为系统可以随时关闭,所以我冒着磁盘已满的风险。
在我看来,这个问题的唯一解决方案是创建一个脚本,temp-rewriteaof-*.aof
从数据 Redis 文件夹中删除所有文件。
问题
有人知道更好的解决方案吗?Redis 有一个干净的程序/命令来解决这个问题吗?
Redis-server 没有复杂的方法来管理运行它的服务器上的磁盘空间。它管理自己的 RDB 快照文件和 AOF 文件(如您所述)。但是,管理由计算机停机中断的先前进程创建的文件不是 Redis 所做的事情。
我建议您在编写的启动时脚本中添加一个例程,将
BGREWRITEAOF
命令发送到 Redis 服务器。该例程将清除先前服务器停止留下的任何陈旧的临时 AOF 文件。这是这个例程的好地方 - 脚本已经与 AOF 文件管理有关,引导时间是通过清理陈旧文件为计算机运行(并消耗磁盘空间)的下几个小时/天做准备的适当时间。