メモリキャッシュ(単にキャッシュと呼ばれることが多い)は、コンピュータアプリケーションがコンピュータのメインメモリ(ランダムアクセスメモリ、またはRAM)にデータを一時的に格納して、そのデータを高速に取得できるようにする技術である。 一時記憶域に使用されるRAMは、キャッシュと呼ばれます。 RAMへのアクセスは、ハードディスクドライブやネットワークなどの他のメディアへのアクセスよりも大幅に高速であるため、キャッシュは、データへの キャッシュは、以前にアクセスされたデータに繰り返しアクセスする共通のパターンを示すアプリケーションの場合に特に効率的です。 キャッシュは、計算に時間がかかるデータ計算を格納するのにも役立ちます。 計算をキャッシュに格納することにより、システムは計算の繰り返しを回避することによって時間を節約する。

メモリキャッシュ図。
メモリキャッシュの概要

メモリキャッシュはどのように機能しますか?

メモリキャッシュは、最初にキャッシュとして使用されるRAMの一部を脇に設定することによって動作します。 アプリケーションは、通常、データベースのようなデータストレージシステムからデータを読み取ろうとすると、目的のレコードがキャッシュに既に存在するかど そうであれば、アプリケーションはキャッシュからデータを読み取り、データベースへの低速アクセスを排除します。 目的のレコードがキャッシュにない場合、アプリケーションはソースからレコードを読み取ります。 そのデータを取得すると、アプリケーションが将来同じデータを必要とするときに、キャッシュからすばやく取得できるように、データもキャッシュに書

キャッシュのサイズが制限されているため、最終的には、アプリケーションが最後にアクセスした新しいデータのためのスペースを確保するために、キャッ つまり、キャッシュシステムには、空き領域を確保するためにレコードを削除する戦略が必要です。 この戦略は、アプリケーションのデータアクセスの性質に依存し、一般的にはすぐに再びアクセスされると予想されないレコードを削除しようとします。 たとえば、最も最近使用されていない(LRU)戦略は、キャッシュ内の他のレコードの前に最後のアクセスがあったレコードを削除します。 ここでの仮定は、レコードがアクセスされてから長い時間が経過している場合、すぐに再びアクセスされない可能性が高いということです。 別の言い方をすれば、最近最も使用されたレコードはすぐに再び使用される可能性があります。 最も頻繁に使用されない(LFU)戦略では、キャッシュ内の各レコードのアクセス数を追跡し、アクセス量が最も少ないレコードを削除する必要があります。 ここでの仮定は、まれに使用されるレコードはすぐに再び使用されない可能性が高いということです。

キャッシュの課題は、”キャッシュミス”を最小限に抑える方法です。、キャッシュ内にないレコードのアプリケーションによる読み取りを試みました。 ミスが多すぎると、キャッシュの効率が低下します。 新しいデータのみを読み取るアプリケーションは、キャッシュの恩恵を受けることはなく、実際には、キャッシュをチェックしながら目的のレコードを見つ この課題を軽減する1つの方法は、より大きなキャッシュを活用することです。 これは、多くの場合、単一のコンピュータ上では実用的ではないため、分散キャッシュは、より大きなデータセットにアクセスする必要があるアプリケーシ 分散キャッシュは、クラスターに接続されている複数のコンピューターのRAMをまとめてプールするため、クラスターにコンピューターを追加することで拡大し続 Hazelcast IMDGのような技術は、大規模なアプリケーションを高速化するための分散クラスターとして使用できます。

キャッシュのもう一つの課題は、キャッシュ内のデータが基になるソース内の最新のデータを反映していない”古い”データを読み取るリスクです。 多くの場合、このリスクはアプリケーションのパフォーマンスのために許容されるトレードオフです。 そうでない場合は、基になるデータソースを更新してキャッシュ内の問題のレコードを更新するのはアプリケーション次第です。

使用例

メモリキャッシュの広範な使用例の1つは、データベースアプリケーション、特に多くのデータベース読み取りを実行するアプリケーションを高速化 アプリケーションでは、データベース読み取りの一部をキャッシュからの読み取りに置き換えることで、頻繁なデータベースアクセスに起因する遅延を解消できます。 このユースケースは、通常、データベースからの動的コンテンツを備えたトラフィックの多いwebサイトのように、大量のデータアクセスが見られる環境で見

別のユースケースには、データベースへの複雑なクエリの結果がキャッシュに格納されるクエリ高速化が含まれます。 グループ化や順序などの操作を実行する複雑なクエリは、完了するまでにかなりの時間がかかる場合があります。 多くのユーザーがアクセスするビジネスインテリジェンス(BI)ダッシュボードの場合と同様に、クエリを繰り返し実行すると、結果をキャッシュに格納す

関連トピック

JCache/Java Cache

キャッシュミス

Hibernate Second-Level Cache

さらに読む

キャッシュユースケース

データベースキャッシュ

Hazelcast Cloud

春のキャッシュ+ヘイゼルキャスト

コメントを残す

メールアドレスが公開されることはありません。