Guava Cache
添加依赖
<dependency>
<groupId>com.google.guavagroupId>
<artifactId>guavaartifactId>
<version>18.0version>
dependency>
封装api
package com.gen.genonlineclassroom.config;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import lombok.Getter;
import lombok.Setter;
import org.springframework.stereotype.Component;
import java.util.concurrent.TimeUnit;
/**
* GuavaCache封装类
*/
@Component
public class GuavaCacheConfig {
@Getter
@Setter
/**
* 10分钟缓存
*/
private Cache<String, Object> tenMinuteCache = CacheBuilder.newBuilder()
// 缓存初始大小
.initialCapacity(10)
// 缓存最大值
.maximumSize(100)
// 并发数设置
.concurrencyLevel(5)
// 缓存过期时间,10分钟后过期
.expireAfterWrite(10, TimeUnit.MINUTES)
// 统计缓存命中率
.recordStats().build();
}
业务模块引入缓存核心代码
/**
* 轮播图列表
*
* @return
*/
@Override
public List<VideoBanner> list() {
try {
Object cacheObj = this.guavaCacheConfig.getTenMinuteCache().get(CacheKeyConstant.VIDEO_BANNER_LIST, () -> {
return videoBannerMapper.selectList(new QueryWrapper<>());
});
if (cacheObj instanceof List) {
return (List<VideoBanner>) cacheObj;
}
} catch (Exception e) {
log.error("轮播图列表报错==》{}", e);
}
return null;
}