私のLinuxディストリビューションはこのredis
データベースを使用しています。起動時にredis-server
データセットをロードするのに約80秒かかります。私が書いた内容を示すログは次のとおりです。
redis-server[249]: 249:M 17 Oct 2022 16:29:55.173 * DB loaded from append only file: 79.442 seconds
Pythonプログラムがメモリのロード操作を完了する前にデータベースを照会しようとすると、例外redis-server
が発生しますredis.exceptions.BusyLoadingError
。
例外の説明は次のとおりです。Redis is loading the dataset in memory
私が説明するコンテキストに適しています(つまり、データベースがメモリにデータをロードしています)。
redis-server
現在、デフォルト設定を使用しているため、どの永続性タイプが使用されているのか正確にはわかりませんredis-server
。
ドキュメントがredis.conf
かなり長いので、ここでは最も重要だと思う設定を報告します。
...
########################### SNAPSHOTTING ###########################
#
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
# OE: tune for a small embedded system with a limited # of keys.
save 120 1
save 60 100
save 30 1000
######################### APPEND ONLY MODE #########################
# OE: changed default to enable this
appendonly yes
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
...
これらの設定(特にappendonly yes
)は、データベースで使用される永続性タイプが(Append Only File
)であることを示すようですAOF
。これらの設定によりロード時間が長くなるようです。
起動時にロード時間が長くなるのを防ぐために使用できる設定はありますか?
ベストアンサー1
これは、redis-server プロセスが追加の専用ファイルを使用するように構成されており、BGREWRITEAOF
コマンドを送信しなかったためである可能性が高くなります。
redis.io WebサイトのRedisマニュアルには、4つの永続性(データ復旧)設定の良い説明があります。 https://redis.io/docs/manual/persistence/。ファイルのみを添付するのもオプションの1つです。
これはない悪いオプションを選択すると、少しのメンテナンスが必要です。それ以外の場合は、ご存知のようにプロセスが遅く開始されます。オプションと長所と短所を調べて、使用パターンに最適なオプションを選択してください。