为什么以下 ehcache.xml 不允许通过 JMX 清除缓存(在 JVisualVM for MBean 中禁用“操作”选项卡进行缓存管理并启用缓存统计)?我使用 spring boot 框架并通过 spring.cache.jcache.config 属性指定 ehcache.xml 文件位置,然后仅使用 @Cachable spring 框架注释。
<config
xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
xmlns='http://www.ehcache.org/v3'
xmlns:jsr107='http://www.ehcache.org/v3/jsr107'
xsi:schemaLocation="
http://www.ehcache.org/v3 http://www.ehcache.org/schema/ehcache-core-3.0.xsd
http://www.ehcache.org/v3/jsr107 http://www.ehcache.org/schema/ehcache-107-ext-3.0.xsd">
<service>
<jsr107:defaults enable-management="true" enable-statistics="true"/>
</service>
<cache alias="stringCache">
<key-type>java.lang.String</key-type>
<value-type>java.lang.String</value-type>
<heap unit="entries">2000</heap>
</cache>
</config>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下代码为 Ehcache 3.3.1 项目实现侦听器。任何人都可以为 ListenerObject 提出解决方案吗?我似乎无法在任何地方找到它,除了在文档页面上我得到了代码
import java.util.logging.Level;
import java.util.logging.Logger;
import org.ehcache.Cache;
import org.ehcache.CacheManager;
import org.ehcache.config.builders.CacheConfigurationBuilder;
import org.ehcache.config.builders.CacheEventListenerConfigurationBuilder;
import org.ehcache.config.builders.CacheManagerBuilder;
import org.ehcache.config.builders.ResourcePoolsBuilder;
import org.ehcache.event.EventType;
public class CacheHandler{
private Logger LOG = Logger.getLogger(this.getClass().getName());
private String cacheName="basicCache";
public Cache cache;
public CacheHandler(){
if(cache==null)
cache=initCache();
}
private Cache initCache(){
CacheEventListenerConfigurationBuilder cacheEventListenerConfiguration = CacheEventListenerConfigurationBuilder
.newEventListenerConfiguration(new ListenerObject(), EventType.CREATED, EventType.UPDATED)
.unordered().asynchronous();
final CacheManager manager = CacheManagerBuilder.newCacheManagerBuilder()
.withCache(cacheName,
CacheConfigurationBuilder.newCacheConfigurationBuilder(String.class, String.class, ResourcePoolsBuilder.heap(10))
.add(cacheEventListenerConfiguration)
).build(true);
final Cache<String, String> cache = manager.getCache("foo", String.class, String.class);
return cache;
}
public …
Run Code Online (Sandbox Code Playgroud) 我们目前在我们的应用程序中使用 ehcache 作为二级缓存,并具有以下配置。
<!-- Configure 2nd level cacheing for these entities -->
<cache name="cacheEntity1"
maxElementsInMemory="1500"
eternal="true"
overflowToDisk="false"/>
<cache name="cacheEntity2"
maxElementsInMemory="3500"
eternal="true"
overflowToDisk="false"/>
Run Code Online (Sandbox Code Playgroud)
我们正计划迁移到 infinispan 缓存。通过查看 infinispan 的文档,我们无法找到任何 XML 配置示例来定义类似于上述使用 ehcache 的缓存实体。
我们希望在休眠实体级别配置以下属性(maxInMemory、timeToIdleSeconds、timeToLiveSeconds)。
我们更喜欢使用 XML 而不是编程方式进行此配置。
有什么建议吗?
谢谢,
萨达西夫
我可以像在 ehcache 中那样插入具有不同到期时间的元素吗
例如 :
缓存 : add element1 //5 秒后过期
cache : add element2 //15秒后过期
cache : add element3 //在'x'秒/分钟后过期
如果没有,你能建议任何替代缓存来解决这个问题吗?
我也打算使用 ehcache,但结果证明它不支持 active/eager 过期。
ehcache ×4
java ×3
caching ×1
ehcache-3 ×1
guava ×1
hibernate ×1
ignite ×1
infinispan ×1
infinispan-8 ×1
jmx ×1
spring-boot ×1