您的位置:首页 > 其它

第七章 企业项目开发--本地缓存guava cache

2016-01-18 13:58 351 查看
1、在实际项目开发中,会使用到很多缓存技术,而且数据库的设计一般也会依赖于有缓存的情况下设计。

常用的缓存分两种:本地缓存和分布式缓存。

常用的本地缓存是guava cache,本章主要介绍guava cache在项目中的使用。

关于常用缓存以及每种缓存常用场景的介绍,之后可以去查看我记录的"Java缓存相关"系列博客。链接如下:

第一章 常用的缓存技术

2、实际使用

本项目的代码基于第六章的代码进行构建,这里只列出修改过的代码:

LoadingCache<String, List<Admin>> adminListCache = CacheBuilder.newBuilder()
.expireAfterWrite(20, TimeUnit.MINUTES)// 缓存20分钟
.maximumSize(1000)// 最多缓存1000个对象
.build(new CacheLoader<String, List<Admin>>() {
public List<Admin> load(String username) throws Exception {
//1、下边这样null的话,不抛异常
List<Admin> admins = adminDao.getUserByName(username);
//System.out.println(admins);//如果admins为空,不会返回null,而是返回[]
if(CollectionUtils.isEmpty(admins)){
System.out.println(admins+"-->");
return null;
}
return admins;
//2、但是如果这里查询出来的结果为null的话,也没关系
//return adminDao.getUserByName(username);
//3、如果这里直接返回null,就会出现com.google.common.cache.CacheLoader$InvalidCacheLoadException
//return null;
}
});


View Code
但是,为了在guava cache的使用中不抛出异常,我们这里直接使用下边这句就好了,由mybatis将[]返回就好了。

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