gpt4 book ai didi

java - 带生存时间的 EHcache 简单示例

转载 作者:行者123 更新时间:2023-12-03 20:00:32 26 4
gpt4 key购买 nike

我需要一个简单的缓存来在内存中存储具有一定生存时间的元组。我在 EHcache 网站上找不到这样做的方法,该网站主要包含复杂的使用场景。谁能帮帮我?

附言我不使用 Spring。

最佳答案

Ehcache 2.x

程序化

CacheManager cacheManager = initCacheManager();
CacheConfiguration cacheConfiguration = new CacheConfiguration().name("myCache")
.maxEntriesLocalHeap(100)
.timeToLiveSeconds(20);
cacheManager.addCache(new Cache(cacheConfiguration));

XML

<cache name="myCache"
maxEntriesLocalHeap="100"
timeToLiveSeconds="20"/>

覆盖每个元素

Ehcache 2.x 允许您覆盖每个 Element 的过期设置:

Element element = new Element("key", "value");
element.setTimeToLive(10);
cache.put(element);

Ehcache 3.x

程序化

CacheManager cacheManager = initCacheManager();
CacheConfigurationBuilder<Long, String> configuration =
CacheConfigurationBuilder.newCacheConfigurationBuilder(Long.class, String.class, ResourcePoolsBuilder
.heap(100))
.withExpiry(Expirations.timeToLiveExpiration(new Duration(20, TimeUnit.SECONDS)));
cacheManager.createCache("myCache", configuration);

在 Ehcache 3 中,构建器是不可变的,可以安全地共享以从相似的配置创建多个缓存。如果您使用静态导入,代码会更紧凑,我在这里没有这样做是为了方便将此代码段粘贴到 IDE 中。

XML

<cache alias="myCache">
<expiry>
<ttl unit="seconds">20</ttl>
</expiry>
<heap>100</heap>
</cache>

通过自定义Expiry覆盖

在Ehcache 3.x中,Expiry是用户可以实现的接口(interface):

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);
}

生存时间 匹配 getExpiryForCreation 调用,它将接收映射的键和值,允许根据映射本身实现不同的过期。

关于java - 带生存时间的 EHcache 简单示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36958656/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com