隨着Ehcache 3.2我實現了Expiry擴展。
public class EvictAtMidnightExpiry implements Expiry {
@Override
public Duration getExpiryForCreation(Object key, Object value) {
DateTime now = new DateTime();
DateTime resetAt = now.plusDays(1).withTimeAtStartOfDay();
long difference = resetAt.toDateTime().getMillis() - now.getMillis();
return Duration.of(difference, TimeUnit.MILLISECONDS);
}
@Override
public Duration getExpiryForAccess(Object key, ValueSupplier value) {
return null;
}
@Override
public Duration getExpiryForUpdate(Object key, ValueSupplier oldValue, Object newValue) {
return null;
}
}
現在,我有記錄等,但我最小化我的代碼清潔。
然後,您只需在配置生成器中對其進行配置即可。
CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, String.class, ResourcePoolsBuilder.heap(1000)).withExpiry(new EvictAtMidnightExpiry()).build()
顯然的Ehcache上有API的有所改善,從2.5到3.2,你不需要創建自己的「元素」,並確保它的使用情況,以發起期滿或驅逐政策。這些策略現在緩存綁定。
這不可能直接。如何使用外部CRON觸發器([tag:quartz-scheduler]?)手動清除緩存? –