最近、私たちはシステムにレベル 1 のキャッシュ メカニズムを構築したいと考えています。しかし、いつも何かが足りないような気がします。
環境:
負荷分散、マスター/スレーブ分離、Redis スタンドアロン (将来的には複数のマシンになる可能性があります)
さて、最初のアイデア:
リーリーユーザーが Web アプリケーションにアクセスした後、ブラウザのキャッシュを設定し、次にローカル ファイル キャッシュとメモリ キャッシュを設定します。
他のユーザーが訪問した後の手順は次のようになると思います:
ブラウザのキャッシュがあるかどうかを確認してください
ローカルマシンにファイルキャッシュがあるかどうかを取得します
メモリキャッシュ
DB
私の質問は:
しかし、特定のステップで何かが欠けているように感じたり、(複数レベルの)キャッシュの有効期限を選択するのが難しいと感じたりします。
また、ローカル ファイル キャッシュの{有効期限の確認、ファイルの読み取り (削除、生成) } は、メモリ キャッシュ (Redis) に直接ジャンプする単一の接続と比較して価値がありますか?
そこで、基本的なキャッシュ メカニズムが適切かどうか、または改善できる欠点があるかどうかを確認したいと思います。ありがとうございます。
最近、私たちはシステムにレベル 1 のキャッシュ メカニズムを構築したいと考えています。しかし、いつも何かが足りないような気がします。
環境:
負荷分散、マスター/スレーブ分離、Redis スタンドアロン (将来的には複数のマシンになる可能性があります)
さて、最初のアイデア:
リーリー ユーザーが Web アプリケーションにアクセスした後、ブラウザーのキャッシュを設定し、次にローカル ファイル キャッシュとメモリ キャッシュを設定します。
他のユーザーがアクセスした後、次の手順になると思います:
ブラウザのキャッシュがあるかどうかを確認してください
ローカルマシンにファイルキャッシュがあるかどうかを取得します
メモリキャッシュ
DB
私の質問は:
しかし、特定のステップで何かが欠けているように感じたり、(複数レベルの)キャッシュの有効期限を選択するのが難しいと感じたりします。
また、ローカル ファイル キャッシュの{有効期限の確認、ファイルの読み取り (削除、生成) } は、メモリ キャッシュ (Redis) に直接ジャンプする単一の接続と比較して価値がありますか?
そこで、基本的なキャッシュ メカニズムが適切かどうか、または改善できる欠点があるかどうかを確認したいと思います。ありがとうございます。
マルチレベル キャッシュはシステムへの負荷を軽減し、RT を大幅に削減します。ただし、考慮する必要がある 1 つの側面は、記事の中で著者によって言及されています。マルチレベルキャッシュを使用しても問題は解決できません。マルチレベルキャッシュを無効にする方法としては、ローカルタイマーを使用して一定間隔でキャッシュを更新してみることができます
実際には、ファイル キャッシュをローカル メモリ キャッシュに置き換えることもできますが、ローカル ディスクの I/O 量が多い場合は対応できないと思います。どちらがより効率的で、ネットワークのオーバーヘッドが高いかについては、実際の状況に基づいて、圧力テストを受ける必要があります。