Spring Cache的使用

固然咱们在平时的使用过程过程当中,都是使用redis来作分布式缓存,并且通常在业务逻辑中,接口这种命中率比较低,并且还要考虑缓存淘汰算法的选取,因此通常应用很少。可是spring既然有这么个功能,咱们就来看看,这里参照前辈的Spring5-Design-Patterns来写这篇博客。html

这里须要使用@EnableCaching注解来开启缓存,而后之类还须要一个缓存管理器,这里使用ConcurrentMapCacheManager,这个实现后续再看。git

这里再使用@CachePut("accountCache")来标记这个缓存,可是我看这里面的注解选项,好像没有缓存时间,而后咱们就可使用啦github

输出:redis

可供选择的有这些,简单介绍三种:算法

  • value (也可以使用 cacheNames) : 可看作命名空间,表示存到哪一个缓存里了。
  • key : 表示命名空间下缓存惟一key,使用Spring Expression Language(简称SpEL,详见参考文献[5])生成。
  • condition : 表示在哪一种状况下才缓存结果(对应的还有unless,哪一种状况不缓存),一样使用SpEL

这里主要使用的有三个注解:spring

@Cacheable 主要针对方法配置。可以依据方法的请求參数对其结果进行缓存
@CachePut  主要针对方法配置,可以依据方法的请求參数对其结果进行缓存,和 @Cacheable 不一样的是,它每次都会触发真实方法的调用
@CachEvict  主要是用来标注在须要清除缓存元素的方法或类上的。当标记在一个类上时表示其中全部的方法的执行都会触发缓存的清除操做缓存

这里能够知道第二次查询的时候,是从缓存中取的,这里的依赖有:less

感受可供选择的仍是比较少的,不是特别实用,在复杂的业务场景前。分布式

参考:htm

git@github.com:PacktPublishing/Spring5-Design-Patterns.git

http://www.javashuo.com/article/p-yfruwgfl-dm.html

相关文章
相关标签/搜索