工作中经常需要用到把一些数据暂时缓存起来,以免重复查询数据库,又不想启用哪些配置复杂的缓存框架,做文件配置或者安装之类的工作。首先会想到静态的hashmap来解决。如
private static final Map<String,Object> map=new Hashmap<>();
这样做很方便,也很简单。但是承受不住一些生产环境大流量的场景,会导致内存不足的问题。
这时我们就会想到把一些数据清理掉,一个比较简单易用的解决方案就是guava cache,根据我们自己的设置,按时自动清理。
首先定义一个静态对象:
private static final Cache<String, List<Map<String, Object>>> cache = CacheBuilder.newBuilder().maximumSize(1000).expireAfterAccess(30L, TimeUnit.MINUTES).build();
这么存:
cache.put(cacheId, retList);
这么取:
List<Map<String, Object>> dataList = cache.getIfPresent(cacheId);
更多的使用说明,网上有很多资料。