随着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]?)手动清除缓存? –