WEB开发网
开发学院软件开发Java Ehcache介绍 阅读

Ehcache介绍

 2010-03-22 00:00:00 来源:WEB开发网   
核心提示: <cacheManagerPeerProviderFactoryclass="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"properties="peerDiscovery=ma

 <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" 
 properties="peerDiscovery=manual, 
  rmiUrls=//localhost:40002/org.springside.examples.miniweb.entity.user.User|//localhost:40002/org.springside.examples.miniweb.entity.user.Role"/> 

3.3 缓存对象的配置

往每一个需要缓存的对象加入子对象cacheEventListenerFactory

   <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
     properties="replicateAsynchronously=true, 
     replicatePuts=true, 
     replicateUpdates=true, 
     replicateUpdatesViaCopy=true, 
     replicateRemovals=true 
     asynchronousReplicationIntervalMillis=<number of milliseconds"> 
     propertySeparator="," />

replicateAsynchronously  对象同步是否异步完成,默认为true。如果比较紧急就设为false。

在一致性时间性要求不强的时候,设为异步可大大提供性能,因为它是异步立即返回的,而且可以批量提交。

replicateUpdatesViaCopy 是否将对象变更复制到所有节点,还是只是发送一个失效信息,让对方该缓存失效,当对方需要该缓存时重新计算载入。

默认为true。鉴于对象复制的消耗挺大的,又有锁的问题,而且对方也未必需要该对象,所以此属性建议设为false。如果业务上真的需要设为true时,就可考虑使用Terracotta了。

replicatePuts、replicateUpdates、replicateRemovals  增删改是否同步,默认都为true。但因为我们前面选择了失效算法,所以replicatePuts 要设为false。

所以我们一般的设置如下:

 <cache name="org.springside.examples.miniweb.entity.user.User" maxElementsInMemory="500" overflowToDisk="true" 
 eternal="true"> 
 <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" 
  properties="replicateAsynchronously=false,replicatePuts=false,replicateUpdatesViaCopy=false" /> 
 </cache>

3.4 Shutdown

在分布式环境或持久化硬盘时,需要调用CacheManager的shutdown操作,Hibernate会自动shutdown它自己的cacheManager,如果在hibernate之外使用,你需要增加:

    <listener> 
     <listener-class>net.sf.ehcache.constructs.web.ShutdownListener</listener-class> 
   </listener>

4.JMS式并发同步

与其他同步方式相比,JMS同步支持了非Cache节点的程序对Cahce的修改。

在分布式缓存中有一种需求:应用节点更改数据库数据后,需要通知所有缓存集群的节点,通常大家都是自行通过JMS实现的,而Ehcache的JMS Replicator提供了一种标准的方案,提供PUT,REMOVE,REMOVE_ALL的标准操作。

上一页  1 2 3 

Tags:Ehcache 介绍

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接