如何以编程方式更改 EhCache 成员的过期时间
How to change a EhCache members expiry time programmatically
我想通过Java代码更改过期时间或设置EhCache成员的过期时间。
我知道对象应该何时过期,但我不确定如何实现。
我知道我可以为整个缓存设置它,例如
Cache cache = manager.getCache("sampleCache");
CacheConfiguration config = cache.getCacheConfiguration();
config.setTimeToIdleSeconds(60);
config.setTimeToLiveSeconds(120);
config.setMaxEntriesLocalHeap(10000);
config.setMaxEntriesLocalDisk(1000000);
有人可以建议我如何为特定成员执行此操作吗?
在Ehcache 2.x中,你可以在你插入缓存的Element
上设置过期时间:
Element element = new Element("key1", "value1");
element.setTimeToLive(300);
在 Ehcache 3.x 中,您可以实现自定义 Expiry
并使其 return 不同 Duration
取决于 key
和 value
:
public interface Expiry<K, V> {
Duration getExpiryForCreation(K key, V value);
Duration getExpiryForAccess(K key, ValueSupplier<? extends V> value);
Duration getExpiryForUpdate(K key, ValueSupplier<? extends V> oldValue, V newValue);
}
查看 API documentation 了解更多信息。
我想通过Java代码更改过期时间或设置EhCache成员的过期时间。
我知道对象应该何时过期,但我不确定如何实现。
我知道我可以为整个缓存设置它,例如
Cache cache = manager.getCache("sampleCache");
CacheConfiguration config = cache.getCacheConfiguration();
config.setTimeToIdleSeconds(60);
config.setTimeToLiveSeconds(120);
config.setMaxEntriesLocalHeap(10000);
config.setMaxEntriesLocalDisk(1000000);
有人可以建议我如何为特定成员执行此操作吗?
在Ehcache 2.x中,你可以在你插入缓存的Element
上设置过期时间:
Element element = new Element("key1", "value1");
element.setTimeToLive(300);
在 Ehcache 3.x 中,您可以实现自定义 Expiry
并使其 return 不同 Duration
取决于 key
和 value
:
public interface Expiry<K, V> {
Duration getExpiryForCreation(K key, V value);
Duration getExpiryForAccess(K key, ValueSupplier<? extends V> value);
Duration getExpiryForUpdate(K key, ValueSupplier<? extends V> oldValue, V newValue);
}
查看 API documentation 了解更多信息。