JavaのダニエルはRedisのキャッシュに関するいくつかの一般的な面接の質問を共有します

交通システムの改善では、複雑性を強化するために、応答性能が問題の焦点になります。キャッシュの使用が優先事項となっています。

インタビューになってキャッシュミドルウェアのリーダーとしてのRedisは、プロジェクトを聞いてきます。

この記事Redisのは、いくつかの一般的な面接の質問を共有します:

キャッシュの雪崩

1.1キャッシュ雪崩とは何ですか?

私たちはすべての要求は、データベースを実行したことを意味しキャッシュを、ハングアップした場合。

JavaのダニエルはRedisのキャッシュに関するいくつかの一般的な面接の質問を共有します


我々は、すべてのRedisのデータが有効期限を設定する必要があるので、Redisのは、すべてのデータが(高価で限られたメモリを)キャッシュされている置くことができないことを知って、そして不活性+の使用は、定期的に期限切れに2つの戦略を削除するには、キーを削除するには削除します。

キャッシュされたデータは、有効期限を設定した場合と同じであり、これらだけRedisのすべては光のデータの一部を削除します。データベースへのこれらのキャッシュの失敗がすべての要求しながら、これは、この期間につながることができます。

これは、キャッシュ雪崩です:Redisのは、すべてのデータベース要求を行って、ハングアップ。

キャッシュ雪崩この問題が発生した場合、サービス全体の麻痺が生じ、当社のデータベースを置くをダウンさせる可能性が高いです!

1.2どのようにキャッシュ雪崩を解決するには?

大幅にキャッシュを削減するキャッシュは、同じ時刻に期限切れと有効期限に加え、ランダムな値に設定します。

このような状況を「Redisのは、すべてのデータベース要求を行って、ハングアップ」のために、私たちは次のようなアイデアを持つことができます。

事件に先立ち:Redisのは、高可用性(マスター・スレーブ・アーキテクチャ+センチネルやRedisのクラスタ)を達成、Redisのは、起きてからこれを掛けないようにしてください。

事件に:Redisのは本当にケースをハングアップ、私たちは、ローカルキャッシュ(ehcacheを)+電流制限(hystrix)、私達のデータベースは(少なくとも私たちのサービスがまだ正常に動作することを保証するために)殺すことだっ避けるようにしてくださいを設定することができます

事件後:永続のRedis、自動的に再起動ディスク、キャッシュデータの高速リカバリからデータをロードします。

キャッシュの浸透

2.1キャッシュの浸透とは何ですか

キャッシュの浸透は存在しない特定のクエリデータを参照します。キャッシュミス以来、およびフォールトトレランスの考慮事項については、データベースからキャッシュ書き込みデータが見つからない場合

それはキャッシュの意味を失って、データベースクエリに行くべきこれは、データ要求に存在していない時間になります。

JavaのダニエルはRedisのキャッシュに関するいくつかの一般的な面接の質問を共有します


リクエストにつながる、キャッシュミスで大量のデータを要求し、データベースを行く:これはキャッシュの浸透です。

キャッシュは、この問題が発生した場合、それがサービス全体の麻痺が生じ、当社のデータベースをダウンさせることが貫通します!

2.2どのようにキャッシュが浸透解決するには?

キャッシュの浸透を解決するため、2つのオプションがあります。

リクエストのパラメータが正当ではないので(すべてのリクエストパラメータが存在しない)ので、私たちは、ブルームフィルタ(ブルームフィルタ)圧縮フィルタまたは早期傍受を使用することができ、違法、データベース層にこの要求をさせてください!

私たちは、データベースから見つけることができない場合は、我々はこの空のオブジェクトキャッシュは内部で行くように設定されているでしょう。場合は、次回の要求は、キャッシュから内部を得ることができます。

このケースでは、一般的に空のオブジェクトは、短い有効期限を設定します。

キャッシュとデータベースの一貫性のあるダブルを書きます

3.1読み出し動作の場合、プロセスは、そのようなものです

キャッシュへの内部が、キャッシュ内の我々のデータは、その後、直接アクセスする場合。

データ・キャッシュは、我々が望むものではない場合、我々は、データベースを照会するために移動し、データベースキャッシュに書き込まれたデータをチェックアウトします。最後に、データは、要求元に戻りました。

3.2キャッシュとデュアル書き込み、データベースの整合性の問題とは何ですか?

もしのみクエリ、データキャッシュされたデータとデータベースが問題ではありません。しかし、我々はそれのための時間を更新したいとき?状況は、データベースとデータの矛盾のキャッシングの多様性を引き起こす可能性があります。

データベースのデータと一致しないデータキャッシュ:ここに矛盾手段であります

JavaのダニエルはRedisのキャッシュに関するいくつかの一般的な面接の質問を共有します


理論的には、限り、我々は有効期限キーを設定して、我々はデータキャッシュとデータベースが最終的に同じであることを確認することができます。

キャッシュされたデータの有効期限が切れている限り、それが削除されます。何のキャッシュが存在しないため、その後、読んで、あなたは、データベース内のデータを確認し、キャッシュにデータをチェックアウトするデータベースに書き込むことができます。

有効期限を設定することに加えて、我々はデータベースとキャッシュに不整合が起こることを避けるために、より多くを行う必要があります。

遂に

この記事では、このようなデータベースとの整合性を確保するためのキャッシュとして、キャッシュ貫通、雪崩のキャッシュを解決する方法を理解するために私たちを導く、二重の問題を記述し、私はあなたが助けを読んで願っています。


おすすめ

転載: blog.51cto.com/14480698/2436786