キャッシュの浸透
クエリキャッシュの手順:
- データベースキャッシュクエリKV。リターンがあります
- データが存在しない場合は、クエリのバックエンドデータベースのSQL
キャッシュの浸透:
キーが故意に悪質なリクエストのクエリは、クエリのバックエンドデータベースを開始するために、Redisのなどの内部キャッシュデータベースに存在しません。データ量が大きい場合、それは圧力、バックエンドが増加します。これは、キャッシュの浸透
避けるためにどのように?
- 要求のフィルタリング:キャッシュへのすべての可能なリクエスト(ブルームフィルタ、ビットマップ格納...)のクエリ。ではコントローラ層のパラメータがルールに準拠している場合、検証のためのオーバー要求、放し、エラーが返されます満たしていません。
- キャッシュはnull:要求を見つけると同時に来た場合はキャッシュデータベースバックエンドデータベースは、次のことができ、キャッシュヌル値、見つけることができません。しかし、キャッシュ短い制限時間に注意を払います。リクエストが直接キャッシュされたNULL値を返し、再び来ます。キーを挿入したデータの場合は、ビジネスへの影響を防ぐために、すぐにキャッシュされたヌル値を削除する必要があります。
- アップデートの確認:キー有効期限の更新をチェックするために来て要求があるたびに
キャッシュ雪崩
キャッシュサーバの再起動やキャッシュ多数の1つの期間に集中した場合、失敗するので、失敗、バックエンドシステムは、多くの圧力をもたらすとき。システムがクラッシュします。
ソリューション:
- 高可用性クラスタ
- ダウングレードの制限、ロック
- 定期的なタスクを常にチェックし、更新前のキャッシュが期限切れになります
同時並行性キャッシュ
例えば、キャッシュ雪崩、クエリ内のデータ・キャッシュの大量後のデータのデータベースから大量。
ソリューション:
ロック分散、同時の数を制御