web-dev-qa-db-ja.com

データベースの更新後にredisを更新する方法は?

一部のデータをredisにキャッシュし、存在する場合はredisからデータを読み取ります。それ以外の場合は、データベースからデータを読み取り、redisにデータを書き込みます。

データベースを更新した後、redisを更新する方法がいくつかあることがわかりました。次に例を示します。

  1. redisのキーを期限切れに設定する
  2. データベースを更新した直後にredisを更新します。
  3. mQにデータを置き、コンシューマーを使用してredisを更新します。

私は少し混乱していて、どのように選択したらいいのかわかりません。

それぞれの方法の長所と短所を教えてください。redisを更新する他の方法を教えたり、この問題についてブログをすすめたりすることをお勧めします。

14
mengying.ye

実際のデータストアとキャッシュは、質問で既に説明した3番目のアプローチを使用して同期する必要があります。

決定的なストア(SQLデータベースなど)にデータを追加するときは、このデータをサービスバスまたはメッセージキューにエンキューし、非同期サービスに何らかのバックグラウンドプロセスを使用して同期全体を実行させる必要があります。

このようなケースは避けたいです(サービスバスと非同期サービスを使用していない場合)。

  • ユーザーはデータがデータベースとキャッシュの両方に保存されるまでユーザーが待機する必要があるため、リクエストやプロセスを遅くします。
  • キャッシングプロセス中に失敗し、再試行ポリシー(通常はサービスバスまたは一部のメッセージキューに組み込まれている機能)を使用できないリスクがあります。また、この失敗は、部分的または完全なキャッシュ破損につながる可能性があり、この状況を修正するタスクを自動的かつ簡単にスケジュールすることはできません。

Redisキーの有効期限の使用については、良い考えです。 Redisは組み込みメカニズムを使用してキーを期限切れにすることができるため、バックグラウンドプロセス全体からキーの期限切れを実装しないでください。キーが存在するのは、それがまだ有効であるためです。

ところで、あなたは常にこのケースにいるわけではありません(キーの有効期限が切れていない場合、それは上書きされるべきではないということです)。実際のドメインによって異なる場合があります。

8