添加依赖
<!--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,转载请注明。