您的位置:首页 > 其它

关于Session缓存简单原理和实现

2013-05-10 11:47 423 查看
Session缓存简单原理:

以前做过很多类是的缓存机制。比方说数据量比较多且基本变化和基本每次都需要的、不是很频繁变更的数据这类。我们都会做成缓存形式,保证访问速度。

比放我们登录用户的数据一般就都是放在session当中。其实很多这类数据都可以直接放session中。

下面帖一篇不是本人自己的代码。基本差不多,原理是一样的可以看看

private static Map<String, List<ProvinceGroup>> provinceCacheMap = new HashMap<String, List<ProvinceGroup>>();

private static Map<String, List<CategoryGroup>> categoryCacheMap = new HashMap<String, List<CategoryGroup>>();

private static Map<String, Date> cacheTime = new HashMap<String, Date>();

public class DataCacheServiceImp implements DataCacheService {

private static Map<String, List<ProvinceGroup>> provinceCacheMap = new HashMap<String, List<ProvinceGroup>>();

private static Map<String, List<CategoryGroup>> categoryCacheMap = new HashMap<String, List<CategoryGroup>>();

private static Map<String, Date> cacheTime = new HashMap<String, Date>();

private static Map<String, Object> marketIndexDataCache = new HashMap<String ,Object>();//批发市场首页缓存数据

private CircleDAO circleDAO;

@Override

public List<ProvinceGroup> listProvinceGroupsByCatId(String catId, String circleCat) {

String key = catId == null || catId.equals("") ? "allCategory" : catId;

List<ProvinceGroup> provinceGroups = provinceCacheMap.get(key);

Date date = new Date();

if (provinceGroups == null || provinceGroups.size() <= 0

|| DateUtil.isInAnHour(cacheTime.get(key), date)) {

// 需要重新获取数据

provinceGroups = circleDAO.groupProvinceByCategory(catId, circleCat);

provinceCacheMap.put(key, provinceGroups);

cacheTime.put(key,date);

}

return provinceGroups;

}

@Override

public List<CategoryGroup> listCategoryGroupsByProvince(String province, String circleCat) {

String key = province == null || province.equals("") ? "allProvince"

: province;

List<CategoryGroup> categoryGroups = categoryCacheMap.get(key);

Date date = new Date();

if (categoryGroups == null || categoryGroups.size() <= 0

|| DateUtil.isInAnHour(cacheTime.get(key), date)) {

// 需要重新获取数据

categoryGroups = circleDAO.groupCategoryByProvince(province,

circleCat);

categoryCacheMap.put(key, categoryGroups);

cacheTime.put(key, date);

}

return categoryGroups;

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