各位好:
在项目中使用了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的缓存失效,调用的是哪个方法,真诚求高手帮忙。
我想实现的是,将缓存中变化的内容持久化到数据库中,但由于变更相对比较频繁,如果每次变更都操作数据库的话性能较低。所以希望积累一定变化后,当缓存失效的时候,将其保存到数据库中。
真心求帮助。万分感谢。
分享到:
相关推荐
1. **大容量堆内存和高可用性**:通过分布式模式,Infinispan可以将数据分散在多个节点上,避免单一故障点,提供数据冗余,同时显著提高存储容量。例如,如果你有一个包含100个服务器的集群,每个服务器有2GB的内存...
4. **Invalidation Cache**: 数据变化时,仅在本地存储并广播更新,其他节点会失效旧数据,适合对延迟不敏感的场景。 **一致性与并发控制** Infinispan采用不同的一致性模型和并发控制策略,如read-write skew检查...
- **XML Schemas**:Infinispan允许用户通过XML配置文件定义缓存行为和策略,包括缓存一致性、失效策略等。 - **跨语言支持**:除了Java之外,Infinispan还支持其他JVM语言如Scala、Kotlin等,使得开发者在选择编程...
Infinispan Data Grid Platform 是一个由JBoss提供的开源分布式...对于开发者来说,掌握Infinispan不仅能够优化现有应用的性能,还能帮助他们在设计新的分布式系统时,选择合适的缓存技术来构建稳定和可扩展的应用。
3. **持久化存储**:除了提供内存中的数据存储外,Infinispan还支持将数据持久化到磁盘或其他外部存储系统中,确保数据的安全性和持久性。 4. **高度可用性**:Infinispan采用了多种机制来保证系统的高可用性,如...
JDBC缓存存储允许Infinispan将数据存储到关系型数据库中,以便在节点之间或重启后能够恢复数据。这种特性对于那些需要高可用性和数据持久性的应用来说是非常有价值的。Infinispan通过JDBC Cache Store插件,支持多种...
通过这个库,开发者可以利用Infinispan的强大功能,如分布式缓存、事件监听、查询以及事务管理等,同时享受到Spring框架的灵活性和可扩展性。 描述中的“noregress.zip”则提到了一个用于性能回归测试的Java库。在...
开发者可以利用Infinispan查询库来构建复杂的数据过滤和检索机制,尤其是在大数据场景下,能够快速地处理和分析存储在Infinispan中的数据。 另一方面,logback是Java社区广泛使用的日志框架,它取代了log4j并提供了...
在实际应用中,Infinispan Server可以与ElasticSearch结合,利用Infinispan的高性能缓存功能加速数据检索,同时借助Search Guard来确保数据的安全性。这种组合方式常见于需要处理大量实时数据且对数据安全有高要求的...
Infinispan作为一个数据存储层,可以增强ODL处理大量数据的能力,比如路由信息、拓扑状态、流表等,保证了在网络规模增长时的性能和可靠性。 Infinispan的特点包括: 1. 分布式:Infinispan可以在多台机器之间分散...
这种结合利用了Infinispan的分布式缓存和数据管理能力,以及Scala Scraper的HTML解析能力,使得开发者能够在处理大规模Web数据时游刃有余。对于需要处理大量网页数据的项目,这两个开源项目无疑是值得信赖的选择。
一旦配置完成,Infinispan会在数据写入缓存时自动触发EclipseLink的持久化操作,同时在数据读取时从数据库中加载或从缓存中返回。此外,Infinispan还支持缓存更新和清除策略,确保缓存与数据库的同步。 在实际应用...
- **故障转移**:通过自动故障转移机制,Infinispan可以在检测到节点故障后将数据重新分配到集群中的其他健康节点上,确保服务的连续性。 **5. 集成与部署** - **集成能力**:Infinispan易于与其他Java EE组件(如...
Infinispan的Aerospike缓存存储插件允许用户将Infinispan的数据存储在Aerospike数据库中,实现数据的持久化和跨节点的分布式缓存。这为需要高性能、高并发访问的应用提供了可靠的基础。这种集成的优势在于,...
【标题】"Infinispan Core 7.0.2.Final" 是一个开源的、高性能的数据网格系统,主要用于在分布式环境中提供数据缓存和存储服务。它属于JBoss中间件的一部分,由Red Hat公司维护。这个版本是7.0.2的最终发行版,通常...
2. **事件驱动**:Infinispan支持事件监听,当数据发生变化时,可以立即通知相关组件,实现快速响应和数据同步。 3. **数据持久化**:Infinispan可以通过集成JPA、JDBC或NoSQL数据库进行数据持久化,确保在集群重启...
使用这个组件,开发者可以设置 Infinispan 在内存缓存满载或者需要持久化时,自动将数据写入 LevelDB,确保数据在系统重启后仍能恢复。同时,LevelDB 支持的数据一致性模型也可以保证缓存数据的可靠性。 总的来说,...
本项目深入分析了基于Java语言的分布式数据网格平台Infinispan的设计源码,项目包含9013个...Infinispan通过提供高效的集群缓存机制,实现了大容量内存的高效利用,增强了系统在分布式环境下的可扩展性和故障恢复能力。
Infinispan是一个高性能、分布式的内存数据网格,常用于缓存和数据存储。HotRod是Infinispan提供的远程协议,允许客户端应用程序通过网络与Infinispan服务器进行通信,执行读写操作。这个版本可能是Infinispan的稳定...
5. 数据持久化:除了内存存储,Infinispan还可以将数据持久化到磁盘,以防止数据丢失。 6. 高级查询:Infinispan集成了Hibernate Search,支持基于Lucene的全文搜索引擎,可以对缓存中的数据进行复杂的查询。 ...