源码地址:仓库 - Allen (datadogapache) - Gitee.com
一.Guava Cache基本介绍
github地址:https://github.com/google/guava/wiki/CachesExplained
全内存的本地缓存实现
⾼性能且功能丰富
线程安全,操作简单 (底层实现机制类似ConcurrentMap)
二.在pom.xml中添加相应的依赖
<!--guava依赖包-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency>
三.封装api
private Cache<String,Object> cache = CacheBuilder.newBuilder()
//设置缓存初始⼤⼩,应该合理设置,后续会扩容
.initialCapacity(10)
//最⼤值
.maximumSize(100)
//并发数设置
.concurrencyLevel(5)
//缓存过期时间,写⼊后10分钟过期
.expireAfterWrite(600,TimeUnit.SECONDS)
//统计缓存命中率
.recordStats()
.build();
public Cache<String, Object> getcache() {
return cache;
}
public void setcache(Cache<String, Object> cache) {
this.cache = cache;
}
四.serviceImpl中具体实现
@Autowired
BaseCache baseCache;
public List<Video> videoList()
{
try{
Object cacheObj =
baseCache.getCache().get(CacheKeyManager.INDEX_VIDEO_LIST,()->{
List<Video> videoList = videoMapper.videoList();
return videoList;
});
if(cacheObj instanceof List){
List<Video> videoList = (List<Video>)cacheObj;
return videoList;
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}