2017-03-09 2 views
0

毎日午前0時にスプリングキャッシュエビクションをスケジュールすることはできますか?スケジュールスプリングキャッシュの退去?

私はSprings Cache Docsを読んでおり、スケジュールされたキャッシュエビクションについては何も見つかりませんでした。

私はキャッシュを毎日退避し、アプリケーション外に変更があった場合にはキャッシュし直す必要があります。

答えて

5

は@Scheduled 例を使用してみてください:

@Scheduled(fixedRate = ONE_DAY) 
@CacheEvict(value = { CACHE_NAME }) 
public void clearCache() {  
} 

あなたはまた、@Scheduledでのcron式を使用することができます。

+0

スケジューリングされた注釈がCacheEvictアノテーションにどのようにバインドされて、それが何をすべきかを理解する方法は? –

+0

'@Scheduled'は指定された時刻のメソッドclearCacheを呼び出します。 メソッドはCacheEvictによってトリガーされるため、キャッシュはクリーニングされます。 コンフィグレーション@EnableSchedulingをクラスコンフィグレーションに含めることを忘れないでください。 –

1

Springキャッシュフレームワークはイベント駆動型です。つまり、@Cacheableまたは@CacheEvictは、それぞれのメソッドが呼び出されたときにのみトリガーされます。

しかし、基本キャッシュプロバイダ(は、Springキャッシュフレームワークが単なる抽象化であり、それ自体キャッシュソリューションを提供しないことを覚えておいてください。)、キャッシュを単独で無効にすることができます。たとえば、EhCacheにはプロパティがあります。 timeToLiveSecondsは、キャッシュがアクティブになるまでの時間を指示する。しかし、これは、@Cacheable注釈付きのメソッドが呼び出されないかぎり、キャッシュを再設定しません。

だから、特定の時点でのキャッシュ立ち退きと再集団について(述べたようにが真夜中を言う)、必要に応じてキャッシュ立ち退きと再人口の引き金となる春に背景scheduled serviceの実装を検討。予想される動作は、すぐに提供されません。

これが役に立ちます。

+0

私は明日の朝にそれを試し、結果にあなたに戻ってきます。 –

+0

アプローチが有効かどうかを共有します。 –

+0

私は他のいくつかのことを優先順位付けしましたが、私はこのユースケースにもう一度取り掛かります。返事が遅くなってごめん。私はすぐに答えに戻ってきます! –

関連する問題