java 缓存读写
2015-07-20 16:46
417 查看
package com.castalia.market.blh.impl; import java.io.Serializable; import java.net.URL; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.springframework.stereotype.Component; import net.sf.ehcache.Cache; import net.sf.ehcache.CacheManager; import net.sf.ehcache.Element; import com.castalia.market.blh.IgetCampaignPrizeFromCacheBlh; import com.castalia.market.vo.CampaignPrizeRange; @Component public class getCampaignPrizeFromCacheBlhImpl implements IgetCampaignPrizeFromCacheBlh { private static final Logger logger = Logger.getLogger(getCampaignPrizeFromCacheBlhImpl.class); private Cache cache; public getCampaignPrizeFromCacheBlhImpl() { URL url = CampaignPrizeCacheBlhImpl.class.getClassLoader().getResource("/config/ehcache.xml"); CacheManager manager = new CacheManager(url); logger.info(manager.getName()); cache = manager.getCache("sampleCache2"); } @Override public synchronized String getCampaignPrizeFromCache(String key, int num) { // TODO Auto-generated method stub StringBuilder Hashcodes=new StringBuilder(); logger.info("取缓存的键:"+key); try{ Element result = cache.get(key); if(result==null) { logger.info("取缓存的键值: CacheNull"); return "CacheNull"; } @SuppressWarnings("deprecation") List<CampaignPrizeRange> CampaignPrizeRanges=(List<CampaignPrizeRange>)result.getValue(); String ServerIndex=key.substring(0,2); int index=0; List<CampaignPrizeRange> RemoveCampaignPrizeRanges=new ArrayList<CampaignPrizeRange>(); tag: for(CampaignPrizeRange e :CampaignPrizeRanges) { for (long i=e.getStartValue();i<=e.getEndValue();i++) { if(index>=num) { e.setStartValue(i); break tag; } else { Hashcodes.append(ServerIndex+String.format("%06d", i)+","); index++; } } RemoveCampaignPrizeRanges.add(e); } if(index!=num) { logger.info("取缓存的键值: Lack"); return "Lack"; } else { for(CampaignPrizeRange e :RemoveCampaignPrizeRanges) { CampaignPrizeRanges.remove(e); } if(Hashcodes.length()>0) { saveToCache(key,CampaignPrizeRanges); } else { logger.info("取缓存的键值: "); return ""; } } } catch(Exception e) { return "Error"; } String keyValue=Hashcodes.substring(0,Hashcodes.length()-1); logger.info("取缓存的键值:"+keyValue); return keyValue; } @Override public synchronized void saveToCache(String key,Object Value ) { logger.info("进入锁保存数据键:"+key); try{ // 添加数据到缓存中 Element element = new Element(key, (Serializable)Value); cache.put(element); logger.info("保存成功"); } catch(Exception e) { logger.info(e.getMessage()); } } @Override public String get(String key){ Element result = cache.get(key); if(result==null) { return "CacheNull"; } @SuppressWarnings("deprecation") String ret= (String) result.getValue(); return ret; } }
相关文章推荐
- java 内部类 多线程
- java web第一个Servlet程序
- IDEA 使用Gradle构建项目后没有src文件,自己新建后不能创建Java文件的解决办法
- #笔记#圣思园 JavaWeb 第49讲——定时器、两种事件绑定
- Spring data JPA中使用Specifications动态构建查询
- JAVA基础
- Eclipse导入git上的maven web项目
- 于Java对象序列化您不知道的5件事
- 算法(第四版)学习笔记之java实现能够动态调整数组大小的栈
- Spring MVC 教程,快速入门,深入分析
- eclipse svn不能用,修改svn的版本为英文
- java socket
- 深入浅出 Java Concurrency (16): 并发容器 part 1 ConcurrentMap (1)
- java对象克隆和序列化
- Java WEB中文乱码问题
- Java并发编程:并发容器之CopyOnWriteArrayList(转载)
- java各种算法排序图解以及原码实现
- Java 的 Excel 导入功能实现
- Spring事务配置的五种方式
- ——JAVASE-集合(下)