Awselasticache-lazy-loading
提供:Dev Guides
AWS ElastiCache-遅延読み込み
キャッシュにデータを入力し、キャッシュを維持する方法はいくつかあります。 これらの異なる方法は、キャッシュ戦略と呼ばれます。 リーダーボードのデータを保持するゲームサイトには、ニュースWebサイトのトレンドニュース表示とは異なる戦略が必要です。 この章では、遅延ロードと呼ばれるこのような戦略について学習します。
アプリケーションによってデータが要求されると、要求はElastiCacheのキャッシュ内のデータを検索します。 2つの可能性があります。 データがキャッシュに存在するか、存在しません。 したがって、状況を次の2つのカテゴリに分類します。
キャッシュヒット
- アプリケーションは、キャッシュからデータを要求します。
- キャッシュクエリは、更新されたデータがキャッシュで利用可能であることを検出します。
- 結果は要求元のアプリケーションに返されます。
キャッシュミス
- アプリケーションは、キャッシュからデータを要求します。
- キャッシュクエリは、更新されたデータがキャッシュで利用できないことを検出します。
- キャッシュクエリによって、要求元のアプリケーションにnullが返されます。
- これで、アプリケーションはデータベースから直接データを要求して受信します。
- その後、要求元アプリケーションは、データベースから直接受信した新しいデータでキャッシュを更新します。
- 次に同じデータが要求されると、上記のキャッシュヒットシナリオに分類されます。
上記のシナリオは、一般的に次の図で表すことができます。
遅延読み込みの利点
- リクエストされたデータのみがキャッシュされます-ほとんどのデータはリクエストされないため、遅延ロードはリクエストされていないデータでキャッシュがいっぱいになることを防ぎます。
- ノードの障害は致命的ではありません-ノードに障害が発生し、新しい空のノードに置き換えられた場合、レイテンシは増加しますが、アプリケーションは機能し続けます。 新しいノードに対してリクエストが行われると、各キャッシュミスによりデータベースのクエリが実行され、データコピーがキャッシュに追加されて、後続のリクエストがキャッシュから取得されます。
遅延読み込みの欠点
- キャッシュミスのペナルティ-各キャッシュミスは3回のトリップになります。 1つは、キャッシュからのデータに対する最初の要求、2つは、データに対するデータベースのクエリであり、最後にデータをキャッシュに書き込みます。 これにより、アプリケーションに到達するデータに顕著な遅延が生じる可能性があります。
- 古いデータ-キャッシュミスがある場合にのみデータがキャッシュに書き込まれると、データベースでデータが変更されたときにキャッシュが更新されないため、キャッシュ内のデータが古くなる可能性があります。 この問題は、次の章で説明するライトスルーおよびTTL戦略の追加によって解決されます。