Infinispan是一个分布式的缓存,由JBOSS开发。支持JSR-107标准。
使用时最好与SPRING结合,用在DAO层。
以某方法参数作为KEY,返回的对象作为VALUE保存到缓存中。
ADD/EDIT/REMOVE方法被执行时则清除所有的缓存。
Infinispan的运行模式有两种:
1、嵌入式
先启动一个进程,再在此进程中启动Infinispan的CACHE MANAGER。
2、CLIENT/SERVER
直接运行startserver.sh来启动。
两者区别
嵌入式:
1、Infinispan和启动进程是在同一个进程里,如JBOSS中的Infinispan
2、要使用Infinispan的CACHE,必须将应用部署到此进程中,如将WAR应用部署到JBOSS中
3、如有多台机以此模式运行,则互相可以通讯
CLIENT/SERVER:
1、Infinispan单独一个进程
2、通过SDK,以MEMCHAED,RHQ等协议访问CACHE
3、如有多台机以此模式运行,互相不可以通讯
JBOSS中的INFINISPAN肯定是嵌入式,要访问INFINISPAN的CACHE必须部署到JBOSS才能访问,没有远程模式。
Infinispan中的CACHE有两种模式:本地缓存和集群缓存。
本地缓存是单机版。
集群缓存是多机网络版,又分为三种:
1、分布式:网络中的每个节点只保存部份缓存条目,所有的节点合起来保存全部缓存条目
当本机无此条目时,要通过网络去到别的机器上取
2、复制式:网络中的每个节点都保存全部缓存条目,但缓存条目有更新时,所有节点一并更新
当本机无此条目时,不用到别的节点取,但缓存条目有更新时,所有节点都会执行更新本地缓存操作
3、无效式:网络中的每个节点互不通讯,但缓存条目有更新时,节点收到失效通知,各自处理本机的缓存条目
编程使用方法
1、通过程序使用,即在代码中写cache的存取。
2、通过注释使用,这各注释是通过截面拦截方法方式实现,即如果在缓存中有此缓存条目,则方法不会被执行,直接返回结果。
又细分两种:
通过SPRING实现,通过JAVA EE的CDI实现。
JBoss 系列三十一:JBoss Data Grid(Infinispan)缓存模式
JBoss 系列三十二:JBoss Data Grid(Infinispan)缓存模式示例
https://docs.jboss.org/infinispan/5.0/apidocs/org/infinispan/spring/provider/package-summary.html
Infinispan integrate with spring based application
http://timtang.me/blog/2012/11/04/infinispan-spring-based-application-integration/
Java缓存新标准(javax.cache)
http://www.importnew.com/11723.html
https://developer.jboss.org/en/infinispan/cn/content?filterID=contentstatus[published]~objecttype~objecttype[document]