キャッシュされたデータと永続データの間の一貫性、この問題は要約されています (優れたブログ投稿を見ました)。実際には読み取りと書き込みが行われており、誰が最初に来るのか、誰が来るのかという問題もあります。最後。 。
理論的には、キャッシュの有効期限を設定することは、結果整合性を確保するための解決策です。このソリューションでは、キャッシュに保存されたデータの有効期限を設定でき、すべての書き込み操作はデータベースの影響を受けるため、キャッシュ操作にのみ最善を尽くす必要があります。 (推奨される学習: Redis ビデオ チュートリアル )
つまり、データベースの書き込みが成功し、キャッシュの更新が失敗した場合、有効期限に達している限り、後続の読み取りリクエストは自然にデータベースから新しい値を読み取り、キャッシュをバックフィルします。 。
Redis は、高性能のキー/値データベースです。 Redis の出現により、memcached などのキーと値のストレージの欠点が大幅に補われ、状況によってはリレーショナル データベースに対して非常に優れた補完的な役割を果たすことができます。非常に使いやすい Python、Ruby、Erlang、および PHP クライアントを提供します。
Redis を使用する一般的なシナリオによれば、次のようになります。
つまり、次のようになります。 redis first データが存在するかどうかを確認し、存在する場合はキャッシュされたデータを直接返します。存在しない場合は、データベースに移動してデータを読み取り、そのデータを Redis にキャッシュします。
該当する場合: データ量は比較的多いが、頻繁に更新されない場合 (ユーザー ランキングなど)
2 番目のタイプの Redis の使用は次のように完了します。最初の状況は異なります。具体的な状況を参照してください:
ここでは、まず Redis にアクセスしてデータが存在するかどうかを確認します。存在する場合は、直接更新します。対応するデータ (このステップでは、対応する更新されたキーが記録されます。たとえば、redis にも保存されます。たとえば、キーは次のとおりです: save_update_keys [lpush リストで記録])、更新されたデータは、ページ。存在しない場合は、データベース内のコンテンツが最初に更新され、次にデータのコピーが Redis に保存されます。
NO10 ステップ: 後の作業: Redis の save_update_keys に保存されているキーをそれぞれ読み取り、対応するデータを見つけて DB に更新するための関連メカニズムがバックグラウンドで存在します。
利点: このプロセスの主な目的は、Redis をデータベースとして使用することであり、データの更新と取得は DB よりも高速です。大量のデータ (Weibo など) を頻繁に変更する場合に非常に適しています。
欠点: Redis に大きく依存しているため、ダウンタイム中にデータを保存する必要があります。 (ただし、Redis のスナップショット AOF を使用することはできます。Redis が動作を停止しても、その後のデータ処理には影響しないため、すぐに回復すれば大きな影響はありません。)
困難: 計画を立てる初期段階のキー 形式とストレージの種類は、データを DB に同期できるかどうかに影響するため重要です。
以上がRedisキャッシュをデータベースと同期する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。