添加依赖
<!--guava依赖包-->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>19.0</version>
</dependency> 先搞一个工具类——BaseCache
@Component
public class BaseCache {
private Cache<String,Object> tenMinuteCache = CacheBuilder.newBuilder()
//设置初始容量
.initialCapacity(10)
//最大值
.maximumSize(100)
//多少并发
.concurrencyLevel(5)
//多少时间后作废——写入后10分钟过期
.expireAfterWrite(600, TimeUnit.SECONDS)
//统计缓存命中率
.recordStats()
.build();
public Cache<String, Object> getTenMinuteCache() {
return tenMinuteCache;
}
public void setTenMinuteCache(Cache<String, Object> tenMinuteCache) {
this.tenMinuteCache = tenMinuteCache;
}
} 先搞一个key 类 方便进行管理
/**
* 缓存key管理类
*/
public class CacheKeyManager {
public static String INDEX_BANNER_KEY = "index:kneowledge";
}
弄一个 Controller 给你看
@Autowired
KnowledgeService knowledgeService;
/**
* 根据类型返回法律知识
*
* @return
*/
@RequestMapping("show_knowledge")
public HashMap showAllKnowledge(int num) {
HashMap result = new HashMap<>();
result.put("result", "success");
result.put("code", "1");
result.put("UserList", knowledgeService.list(num));
return result;
} KnowledgeService 类
public interface KnowledgeService {
List<Knowledge> list(int num);
}
KnowledgeServiceImpl 类
@Service
public class KnowledgeServiceImpl implements KnowledgeService{
@Autowired
KnowledgeMapper knowledgeMapper;
@Autowired
BaseCache baseCache;
@Override
public List<Knowledge> list(int num) {
KnowledgeExample pe = new KnowledgeExample();
if (num==1 || num==2 ||num==3 ) {
pe.createCriteria().andTypeEqualTo(num+"");
}
try {
Object cacheObj = baseCache.getTenMinuteCache().get(CacheKeyManager.INDEX_BANNER_KEY,()->{
List<Knowledge> knowledges = knowledgeMapper.selectByExample(pe);
System.out.println("从数据库里面找数据");
return knowledges;
});
if (cacheObj instanceof List){
List<Knowledge> knowledges = (List<Knowledge>)cacheObj;
System.out.println("从缓存里面找数据");
return knowledges;
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
}
本文作者为DBC,转载请注明。