[英]cache implementation on DAO with custom refresh and evictions java
在我的應用程序中,我有一個場景,我必須每24小時刷新一次緩存。 我預計數據庫會停機,因此僅在數據庫運行時,我才需要實現一個用例來在24小時后刷新緩存。
我使用的是spring-ehache ,確實實現了每24小時刷新一次的簡單緩存,但是卻無法動手以確保在數據庫停機時進行保留。
從概念上講,您可以將調度和緩存逐出分為兩個模塊,並且僅在滿足某些條件(在這種情況下,數據庫的運行狀況檢查返回true
)時清除緩存:
SomeCachedService.java :
class SomeCachedService {
@Autowired
private YourDao dao;
@Cacheable("your-cache")
public YourData getData() {
return dao.queryForData();
}
@CacheEvict("your-cache")
public void evictCache() {
// no body needed
}
}
CacheMonitor.java
class CacheMonitor {
@Autowired
private SomeCachedService service;
@Autowired
private YourDao dao;
@Scheduled(fixedDelay = TimeUnit.DAYS.toMillis(1))
public conditionallyClearCache() {
if (dao.isDatabaseUp()) {
service.evictCache();
}
}
}
Ehcache還允許您創建自定義逐出算法,但是在這種情況下文檔似乎不太有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.