各位好:
在项目中使用了jboss的infinispan作为缓存架构。我的配置文件如下:
<namedCache name="persistCache">
<clustering mode="replication">
<async asyncMarshalling="true"/>
</clustering>
<expiration lifespan="-1" maxIdle="1800000"/>
<loaders passivation="false" shared="false" preload="true">
<loader class="org.infinispan.loaders.file.FileCacheStore" fetchPersistentState="true"
ignoreModifications="false" purgeOnStartup="false">
<properties>
<property name="location" value="/Users/wangxia/infinispan/notify"/>
</properties>
</loader>
</loaders>
<eviction wakeUpInterval="30000" maxEntries="200" strategy="FIFO"/>
<deadlockDetection enabled="true" spinDuration="1000"/>
</namedCache>
通过设置
确实在1800000毫秒后,cache中的entry失效了。但是通过加上自定义的监听器以后
public class MyListener {
@CacheEntryCreated
@CacheEntryModified
@CacheEntryRemoved
@CacheEntryPassivated
@CacheEntryEvicted
@CacheEntryVisited
public void doSomething(Event event) {
if (event.getType() == Event.Type.CACHE_ENTRY_CREATED){
//System.out.println("Cache created. Details = " + event);
}else if (event.getType() == Event.Type.CACHE_ENTRY_MODIFIED){
//System.out.println("Cache modified. Details = " + event);
}
else if (event.getType() == Event.Type.CACHE_ENTRY_REMOVED)
System.out.println("Cache removed. Details = " + event);
else if (event.getType() == Event.Type.CACHE_ENTRY_PASSIVATED)
System.out.println("Cache passivated. Details = " + event);
else if (event.getType() == Event.Type.CACHE_ENTRY_EVICTED)
System.out.println("Cache evicted. Details = " + event);
else if (event.getType() == Event.Type.CACHE_ENTRY_VISITED){
//System.out.println("111111Cache visited. Details = " + event);
}
else
System.out.println("-----------evnet------"+event);
}
}
能够监听到
@CacheEntryCreated @CacheEntryModified,@CacheEntryVisited事件,有正确的打印输出。
@CacheEntryRemoved事件需要代码中自发调用执行cache.remove(key)然后会有打印输出。但是缓存失效,却没有被这些监听事件捕获到。
@CacheEntryPassivated @CacheEntryEvicted 事件在entry创建到entry失效的过程中也没有打印输出。
想知道infinispan的缓存失效,调用的是哪个方法,真诚求高手帮忙。
我想实现的是,将缓存中变化的内容持久化到数据库中,但由于变更相对比较频繁,如果每次变更都操作数据库的话性能较低。所以希望积累一定变化后,当缓存失效的时候,将其保存到数据库中。
真心求帮助。万分感谢。
分享到:
相关推荐
Infinispan 网格 缓存 框架
较为权威 与 全面的 解读了infinispan带给我们的优秀特性 数据网格 分布式缓存
介绍了Infinispan的应用和原理,以及运行机制。
NULL 博文链接:https://hougechuanqi.iteye.com/blog/1292236
JBoss提供的开源分布缓存式解决方案,能全面支持Spring、Hibernate、JPA、memcache等,并提供了lucence相关的查询接口,高性能WEB框架的必备元素。
infinispan-6.0.2.Final
Infinispan 入门 由于熟悉eclipse 环境,所以用javaEE eclipse 开发一个实例 1、 创建一个java project 名称为infinispan_...如果高速缓存模式设置为“本地”,所讨论的高速缓存将不支持聚类即使其高速缓存管理器一样
运行 QueryWith2lcBenchmark/FindWith2lcBenchmark: -Djub.consumers=CONSOLE,H2 -Djub.db.file=.benchmarks 要添加 Byteman,请添加: -javaagent:/opt/byteman/lib/byteman.jar=listener:true,boot:/opt/byteman/...
Infinispan Aerospike 缓存存储 文献资料 去做
Infinispan运算符 这是一个OpenShift运算符,用于运行和规则Infinispan。...(可选)可以在运行时构建docker映像: $ make image IMAGE=image_name TAG=image_tag 或者您的Docker版本没有多阶段构建 $ make image
hibernate-search-infinispan-4.1.0.CR3.jar
infinispan-jpa-eclipselink商店该缓存存储实现通过Eclipselink JPA实现将数据持久化到关系数据库。
web-logback.zip,logback appender依赖html5 sse在浏览器控制台上推送日志browser console appender进行logback
infinispan-简单教程 ... mvn clean packagemvn exec:exec 首先将涉及将存档部署到Wildfly的教程是这样部署的: mvn clean packagemvn wildfly:deploy 然后,在教程中查找要与之交互的特定URL。更进一步检查存储库
无穷大夸克 基于Infinispan Quarkus的扩展和服务器 如何建造 如果您使用的是非标记版本(例如,主版本),请确保已构建相同版本... 将GRAALVM_HOME环境变量设置为提取的graal运行时 建立项目mvn clean install -Dnative
Infinispan是一个开放源代码(在)的数据网格平台。 有关Infinispan的更多信息,包括HOWTO,入门指南,构建说明和下载二进制文件,请访问该项目的网站, 版 贡献 有关贡献准则,请参阅本。 所有捐款均受约束。 ...
Infinispan 远程教程 概述 这是一个教程,它解释了如何使用您自己的应用程序中提供的远程 API 访问和使用 Infinispan 服务器。 每个标记的提交都是一个单独的课程,教授 Infinispan 的一个方面。 先决条件 吉特 是...
Infinispan Data Grid Platform Definitive Guide
infinispan-presentation-splitbrain Infinispan 脑裂演示
infinispan-spring-boot:Infinispan Spring Boot启动器。 在Spring Boot应用程序中使用此启动程序,以帮助您在嵌入式和客户端服务器模式下使用Infinispan + Spring集成