您的位置:首页 > 编程语言 > Java开发

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: