java实现本地数据缓存
首先,我们根据项目需要设计数据结构,比如map、list,下面是我所用到的数据结构,创建一个缓存工具类。
public class cacheUtil {private static ConcurrentMap<String, List<Map>> IEC_ITEM_DATA= Maps.newConcurrentMap();public static synchronized void addData(String id, Map data) {getIECItemData(id).add(data);}public static synchronized void removeIECItem(String id) {IEC_ITEM_DATA.remove(id);}public static synchronized List<Map> getIECItemData(String id) {if (!IEC_ITEM_DATA.containsKey(id)){putIECItem(id, Lists.newArrayList());}return IEC_ITEM_DATA.get(id);}public static synchronized void putIECItem(String id, List<Map> data) {IEC_ITEM_DATA.put(id, data);}
}
接下来就是在项目中使用缓存工具将数据库数据缓存到本地,方便下次直接使用,而非再去查询数据库。
//从缓存中获取数据
List<Map> iecItemData = IECItemCacheUtil.getIECItemData(String.valueOf(childId));
List<Map<String,Object>> result = Lists.newArrayList();
//判断缓存中是否存在数据,若为空,则查询数据库,然后将数据放入缓存中
if(CollectionUtils.isEmpty(iecItemData)){Map dataMap = iec104CollectTemplateDao.queryItem(wfCode, childId);if(dataMap == null){return R.data(null);}Object tags = dataMap.get("tags");iecItemData = (List<Map>) ((Map)tags).get("iec104Items");//存入缓存IECItemCacheUtil.putIECItem(String.valueOf(childId),iecItemData);
}
//若缓存中有数据,则直接获取,进行处理
...
写在最后,利用map实现本地缓存就实现了,当然这种如果服务重启,缓存也清理了;
如果项目中有用到redis服务器,可以利用redis实现缓存,效率更高。
有关redis如何实现缓存,将在后面的博客中介绍!
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
