この記事では、RDBスナップショットとAOFを使用したRedisの持続性について説明します。それは、構成、トレードオフ(速度と安全性)、最適化戦略(ワークロード分析、ハードウェア、チューニング)、および頻度の推奨事項を詳述します。間で選択または結合
Redisは、RDB(Redisデータベース)スナップショットとAOF(ファイルのみを追加)の2つの主要な永続性メカニズムを提供します。両方を個別に構成するか、1つだけを使用できます。それらを構成する方法は次のとおりです。
RDB構成: RDBは、Redisデータのポイントインタイムスナップショットを作成します。 redis.conf
ファイルのsave
指令を使用して構成されています。この指令は、スナップショットを作成する条件を指定します。例えば:
<code>save 900 1 # Save a snapshot after 900 seconds (15 minutes) if at least one key changed. save 300 10 # Save a snapshot after 300 seconds (5 minutes) if at least 10 keys changed. save 60 10000 # Save a snapshot after 60 seconds (1 minute) if at least 10000 keys changed.</code>
周波数を調整するために行を削除または追加できます。単一のsave
指令は、Redisが普通にクラッシュする場合、一貫性のないデータにつながる可能性があるため、障害のトレランスを改善するために複数のsave
指令が推奨されます。 RDBスナップショットは非同期に作成されます。つまり、Redis操作をブロックしません。
AOF構成: AOFは、すべての書き込み操作をファイルにログに記録します。これにより、より詳細なデータリカバリが提供されますが、RDBよりも遅くなる可能性があります。 redis.conf
でaofを構成します:
<code>appendonly yes # Enable AOF appendfilename "appendonly.aof" # Specify the AOF filename appendfsync everysec # Write the AOF file to disk every second. Other options are "always" (sync after every write) and "no" (OS handles syncing).</code>
appendfsync
、データの耐久性にとって重要です。 everysec
、パフォーマンスとデータの安全性のバランスを提供します。 always
データの安全性を保証しますが、パフォーマンスに影響を与えます。 no
は最速ですが、システムがクラッシュした場合のデータ損失を危険にさらします。
RDBとAOFの両方を同時に有効にすることができます。この場合、AOFはクラッシュの場合により完全な回復を提供しますが、RDBは迅速なバックアップとして機能します。特定のニーズと優先順位に基づいて構成を調整することを忘れないでください。
RDBとAOFの選択は、優先順位に依存します。
特徴 | RDB | aof |
---|---|---|
スピード | より速く、スナップショットが非同期に作成されます | より遅い、特にappendfsync always
|
データの安全性 | 安全性が低く、クラッシュ中の潜在的なデータ損失 | より安全で最小限のデータ損失、またはeverysec always 最小限のデータ損失 |
回復時間 | より速い回復 | ファイルのサイズに応じて、回復が遅い |
ディスクスペース | より少ないディスクスペースを使用します | より多くのディスクスペースを使用します |
複雑 | 構成がよりシンプルです | 構成と管理をより複雑にします |
RDBは、データ損失の耐性が高く、速度が重要なアプリケーションに適しています。 AOFは、高いデータの整合性を必要とするアプリケーションに適しており、いくらかのパフォーマンスを犠牲にすることをいとわない。両方を使用すると、堅牢なソリューションが提供されます。
Redisの持続性の最適化には、ワークロードとパフォーマンスのニーズを慎重に考慮します。ここにいくつかの戦略があります:
save
ディレクティブとAOFのappendfsync
設定を実験します。パフォーマンスメトリック(CPU使用、I/O待ち時間)を監視して、データの安全性と速度の最適なバランスを見つけます。この質問に対する答えはありません。データの変更率、データ損失の許容範囲、パフォーマンス要件に大きく依存します。
RDB:デフォルトのような保守的な設定から始めて、データ損失の許容範囲を監視します。アプリケーションが数分間のデータを失うことに耐えることができる場合、スナップショットの頻度が少なくなります。データの安全性が高い場合は、頻度を増やしてください。
AOF: appendfsync everysec
、ほとんどのアプリケーションでパフォーマンスとデータの安全性のバランスをとることができます。 appendfsync always
最大のデータ安全性を提供しますが、パフォーマンスを低下させます。 appendfsync no
は最速ですが、最も危険です。リスク許容度と一致するオプションを選択します。
Redisインスタンスのパフォーマンスを定期的に監視します。持続性操作によるパフォーマンスの劣化が観察される場合は、それに応じて頻度を調整します。ツールを使用してCPUの使用状況、I/O待ち時間、およびメモリ使用量を監視して、構成の選択をガイドすることを検討してください。現実的な負荷条件下で構成を徹底的にテストすることを忘れないでください。
以上がRedis Persistence(RDB Snapshots and AOF)を構成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。