Redis
從磁碟中刪除由 Redis 命令 BGREWRITEAOF 引起的臨時文件
上下文描述
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 文件管理有關,並且引導時間是通過清理陳舊文件為電腦執行(並消耗磁碟空間)的下幾個小時/天做準備的適當時間。