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;
}