毎日午前0時にスプリングキャッシュエビクションをスケジュールすることはできますか?スケジュールスプリングキャッシュの退去?
私はSprings Cache Docsを読んでおり、スケジュールされたキャッシュエビクションについては何も見つかりませんでした。
私はキャッシュを毎日退避し、アプリケーション外に変更があった場合にはキャッシュし直す必要があります。
毎日午前0時にスプリングキャッシュエビクションをスケジュールすることはできますか?スケジュールスプリングキャッシュの退去?
私はSprings Cache Docsを読んでおり、スケジュールされたキャッシュエビクションについては何も見つかりませんでした。
私はキャッシュを毎日退避し、アプリケーション外に変更があった場合にはキャッシュし直す必要があります。
は@Scheduled 例を使用してみてください:
@Scheduled(fixedRate = ONE_DAY)
@CacheEvict(value = { CACHE_NAME })
public void clearCache() {
}
あなたはまた、@Scheduledでのcron式を使用することができます。
Springキャッシュフレームワークはイベント駆動型です。つまり、@Cacheable
または@CacheEvict
は、それぞれのメソッドが呼び出されたときにのみトリガーされます。
しかし、基本キャッシュプロバイダ(は、Springキャッシュフレームワークが単なる抽象化であり、それ自体キャッシュソリューションを提供しないことを覚えておいてください。)、キャッシュを単独で無効にすることができます。たとえば、EhCacheにはプロパティがあります。 timeToLiveSeconds
は、キャッシュがアクティブになるまでの時間を指示する。しかし、これは、@Cacheable
注釈付きのメソッドが呼び出されないかぎり、キャッシュを再設定しません。
だから、特定の時点でのキャッシュ立ち退きと再集団について(述べたようにが真夜中を言う)、必要に応じてキャッシュ立ち退きと再人口の引き金となる春に背景scheduled serviceの実装を検討。予想される動作は、すぐに提供されません。
これが役に立ちます。
私は明日の朝にそれを試し、結果にあなたに戻ってきます。 –
アプローチが有効かどうかを共有します。 –
私は他のいくつかのことを優先順位付けしましたが、私はこのユースケースにもう一度取り掛かります。返事が遅くなってごめん。私はすぐに答えに戻ってきます! –
スケジューリングされた注釈がCacheEvictアノテーションにどのようにバインドされて、それが何をすべきかを理解する方法は? –
'@Scheduled'は指定された時刻のメソッドclearCacheを呼び出します。 メソッドはCacheEvictによってトリガーされるため、キャッシュはクリーニングされます。 コンフィグレーション@EnableSchedulingをクラスコンフィグレーションに含めることを忘れないでください。 –