0

で更新テイク場所リフレッシュするために、私の残りのAPIキャッシュは、私は、クエリを通じてデータベース内の任意の更新を行う場合は、キャッシュはそれらの変更を更新しませんEhcacheの私はEhcacheのに新しいですときに、データベース

<cache name="com.a.b.c.model.Act" 
maxElementsInMemory="10000" overflowToDisk="false" statistics="true" /> 

の作品。

REST APIを使用して更新すると、キャッシュがリフレッシュされます。私は変更が

それは行うことができますtimeToLiveSecondsまたは任意の他の構成で行ってもいいされているデータベースで発生したときにキャッシュの更新を取得する必要がある場合に確認する必要がありますどのような変化を

答えて

2

キャッシュが更新され、キャッシングが実行されるサービスメソッドではなくキャッシュが更新されるのは、キャッシュに関する古典的な問題です。

Ehcacheは、対応することを意味するので、ここでは解決策を提供していません。ALL記録システムとして機能する技術。データベースだけでなく、Webサービスや実際にはプログラマーが思い付くことがあります。

ただし、ご使用のアプリケーションが古いデータをキャッシュに保存してわずかな時間しか使用できない場合は、満了が役立ちます。これは、有効期間としてキャッシュエントリを有効期間としてマークします。

アプリケーションがキャッシュ内の古くなったデータをサポートできない場合は、システムを更新するプロセスがキャッシュを無効にすることを確認する必要があります。

1

データベースをupadatingされたコードは(同じVMまたは分散永続性を)Ehcacheのマネージャにアクセスできる場合は最善の解決策は、キャッシュに

CacheManager.getInstance().getEhcache("mycache").remove(key); 

を破ると、キャッシュが自律的にリフレッシュさせることです。

あなたはすでにあなたにも、エントリの作成が集中化され(、あなたがより多くを追加することができ、あなたのコードがCacheEntryFactoriesを持っている場合、私は工場がビジネスをやらせるだろうput

CacheManager.getInstance().getEhcache("mycache").put(key, updatedObject); 

で1つのステップをスキップすることができ、更新オブジェクトを処分した場合ロジックあり)

関連する問題