EhCache分布式缓存数据共享

本文介绍如何通过EhCache实现多台服务器间的缓存数据共享,包括配置文件解析、监听设置及测试代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

EhCache分布式多台服务器共享数据
所需jar包:ehcache-core-2.6.6.jar、slf4j-api-1.6.6.jar、slf4j-log4j12-1.6.6.jar、junit-4.11.jar
第一、我们需要了解ehcache.xml配置信息含义.这个配置文件在ehcache-core-2.6.6.jar包里面有一个默认(default)的xml文件.
我们打开ehcache-failsafe.xml文件

下面仅当个人理解,希望对你们有帮助
<diskStore>,它的作用是当设置了缓存溢出的时候写到硬盘中(overfolowToDisk) 或 数据在硬盘持久化(diskpersistent)时,所必须要的参数。

path:这里有几个选择方案,当然根据上面的解释,个人翻译是这样的
path="user.home"---------用户根目录
path="user.dir"---------用户当前工作项目目录
path="java.io.tmpdir"---------默认模版文件路径,个人猜测这里应该这样eg:E:\\ehcacheDir
path="ehcache.disk.store.dir"-------一个你在命令行指定的系统属性

后续还有很多注解就自己看了。下面还是给如何去使用,这里我看了一篇博客(http://blog.youkuaiyun.com/bjyfb/article/details/7939672),但是参照下始终无法实现。
这里我写下我的解释:
ehcache.xml:

     
     


     
     

     
       
   
   	
      
        
  
      
        
  
      
      
  		 	
  
      
      
  
      
      
  
      
                 
 
 
      
        
  
      
                           

  
  
      
      
  
      
        
     
       
          
    
      
       
    
     
    
      
      
  
      
       
           
       
              
    
       
        
    
      
        

     
       
这里监听192.168.1.223:40001,与192.168.1.223:40002信息同步.
那么就需要一个192.168.1.223:40002的server
所以还需要一个配置文件.
ehcache2.xml:
就是在ehcache.xml中修改192.168.1.223:40001 => 192.168.1.223:40002        ,  192.168.1.223:40002 => 192.168.1.223:40001
这里很重要,不然就无法获取到缓存数据.
接下来,我们就开始测试
创建TestCacheGet.Class:
package cn.springmvc.test.chcache;

import java.net.URL;



import cn.springmvc.test.bean.UserBean;
import junit.framework.TestCase;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class TestGetCache extends TestCase {
	public void testGet() throws Exception {  
		
        URL url = TestGetCache.class.getClassLoader().getResource(  
                "conf/ehcache.xml");  
        CacheManager manager = new CacheManager(url);  
          
        Cache cache = manager.getCache("metaCache");  
          
        while (true) {  
            System.out.println("搜索中...");  
            System.out.println("当前资源数:" + cache.getSize());  
            Element element = cache.get("key");  
            if (element != null) {  
                UserBean user = (UserBean)element.getValue();  
                System.out.println(user.getUserName());  
                break;  
            }  
            Thread.sleep(3000);  
        }  
    }  
}


创建TestCachePut.Class:
package cn.springmvc.test.chcache;

import java.net.URL;


import cn.springmvc.test.bean.UserBean;
import junit.framework.TestCase;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element;

public class TestPutCache extends TestCase {
	public void testPut(){
		 	URL url = TestPutCache.class.getClassLoader().getResource(  
	                "conf/ehcache2.xml");  
	        CacheManager manager = new CacheManager(url);  
	          
	        Cache cache = manager.getCache("metaCache");  
	        
	        UserBean user = new UserBean();  
	        user.setUserName("张三");  
	        Element element = new Element("key",user);  
	        cache.put(element);  
	        manager.shutdown();  
	        System.out.println("已放入缓存!");  
	        
	}
	
}



执行Junit:
现执行TestCacheGet.Class

再执行TestCachePut.Class

接着在TestCacheGet.Class的打印报告中出现:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值