ehcache实现缓存共享
来源:互联网 发布:矩阵求逆引理 编辑:程序博客网 时间:2024/05/17 07:58
ehcache可以实现多个应用缓存共享,更新同步。
例如现在服务器有server1和server2两个应用,server1缓存获取key为ehcache的缓存,然后循环添加key=i,value=i的10条缓存。server2缓存添加key为ehcache的缓存并循环输出key=i的10条缓存。
server1第一次运行,获取key为ehcache的缓存应该为null,然后添加缓存。
server2第一次运行,添加key为ehcache的缓存,然后输出key=i的10条缓存有值。
server1第二次运行,获取key为ehcache的缓存有值,key=i的10条缓存数据被更新。
思路清晰然后开始实现:
server1代码
创建类EhcacheAction
public class EhcacheAction { public static void main(String[] args) { //cacheManager实例化 CacheManager cacheManager = CacheManager.create("classpah:cache/ehcache.xml"); Cache cache= cacheManager.getCache("userCache"); //获取key为ehcache的缓存并打印出来 Element temp = cache.get("ehcache"); System.out.println(temp.getObjectValue()); for (int i = 0; i < 10; i++) { //添加缓存key=i,value=i Element temp=new Element(i,i); cache.put(temp); System.out.println("第" + i + "次cache.put"); }}
server1 ehcache.xml配置
<defaultCache maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" /> <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual, rmiUrls=//localhost:40002/userCache" propertySeparator=","/> <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="hostName=localhost, port=40001,socketTimeoutMillis=2000" /> <cache name="userCache" maxElementsInMemory="10000" eternal="false" overflowToDisk="true" timeToIdleSeconds="300000" timeToLiveSeconds="600000" memoryStoreEvictionPolicy="LFU"> <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " /> <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/> </cache>
server2代码
public class EhcacheAction { public static void main(String[] args) { //cacheManager实例化 CacheManager cacheManager = CacheManager.create("classpah:cache/ehcache.xml"); Cache cache= cacheManager.getCache("userCache"); //添加key="ehcache"的缓存 cache.put(new Element("ehcache", "newaddvalue")); for (int i = 0; i < 10; i++) { System.out.println("第"+i+"次加载cache.size="+cache.getSize()); } }}
server2 ehcache.xml配置
<defaultCache maxElementsInMemory="1000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="false" /> <cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory" properties="peerDiscovery=manual, rmiUrls=//localhost:40001/userCache" propertySeparator=","/> <cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory" properties="hostName=localhost, port=40002,socketTimeoutMillis=2000" /> <cache name="userCache" maxElementsInMemory="10000" eternal="false" overflowToDisk="true" timeToIdleSeconds="300000" timeToLiveSeconds="600000" memoryStoreEvictionPolicy="LFU"> <cacheEventListenerFactory class="net.sf.ehcache.distribution.RMICacheReplicatorFactory" properties="replicateAsynchronously=true, replicatePuts=true, replicateUpdates=true,replicateUpdatesViaCopy= false, replicateRemovals= true " /> <bootstrapCacheLoaderFactory class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/> </cache>
运行server1,server2查看输出类容。这样就实现了同台服务器两个应用缓存共享了。
我尝试过将server1和server2分别附属在两台服务器上,然后将各自的ehcache.xml中cacheManagerPeerProviderFactory 节点中hostName属性赋值为其它服务器的ip地址,运行后发现拒绝连接(防火墙已经全部关闭)这个问题还有待研究,希望有大神或已解决的高手帮助小弟告诉解决方法。
0 0
- ehcache 实现缓存共享
- ehcache实现缓存共享
- springmvc结合ehcache实现共享对象缓存
- Ehcache学习(四)ehcache缓存共享
- EhCache分布式缓存数据共享
- ehcache 实现前端缓存
- Ehcache分布式缓存实现
- Spring MVC3 + Ehcache 缓存实现
- EhCache实现OSGi缓存bundle
- 使用EhCache实现页面缓存
- spring ehcache实现应用缓存
- SpringMvc Ehcache 实现缓存机制
- SpringMVC Ehcache的缓存实现
- ehcache通过注解实现缓存
- Spring MVC3 + Ehcache 缓存实现
- spring整合ehcache实现缓存
- springMVC 实现ehcache 缓存 demo
- spring+ehcache实现的缓存查询参数。
- 一个简单的邮件发送
- 混合高斯模型GMM
- Opencv人脸识别备忘
- Java核心技术(四) —— 继承(2)
- Python中的函数修饰符
- ehcache实现缓存共享
- Mac下PHP环境的配置
- UIViewContentMode
- 进程 vs. 线程
- 云计算场景下常见词汇/术语汇总---长期更新
- 一款超小且很好用的eclipse properties 编辑器插件
- Extjs4 grid的排序
- GIThub地址
- XML总结