这篇文章将为大家详细讲解有关spring缓存cache怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
spring缓存cache的使用
在spring配置文件中添加schema和spring对缓存注解的支持:
在spring配置文件中加入缓存管理器:
然后在代码的service的impl层加上如下注解即可把数据缓存起来:
@cacheable(value="bannercache")
其中@cacheable表示spring将缓存该方法获取到的数据,(缓存是基于key-value方式实现的),key为该方法的参数,value为返回的数据,当你连续访问该方法时你会发现只有第一次会访问数据库. 其他次数只是查询缓存.减轻了数据库的压力.
当更新了数据库的数据,需要让缓存失效时,使用下面的注解:
这个注解表示让appcache缓存的所有数据都失效。
@cacheevict(value = "appcache", allentries = true)
springcache配置缓存存活时间
spring cache @cacheable本身不支持key expiration的设置,以下代码可自定义实现spring cache的expiration,针对redis、springboot2.0。
直接上代码:
@service @configuration public class customcachemng{ private logger logger = loggerfactory.getlogger(this.getclass()); // 指明自定义cachemanager的bean name @cacheable(value = "test",key = "'obj1'",cachemanager = "customcachemanager") public user cache1(){ user user = new user().setid(1); logger.info("1"); return user; } @cacheable(value = "test",key = "'obj2'") public user cache2(){ user user = new user().setid(1); logger.info("2"); return user; } // 自定义的cachemanager,实现存活2天 @bean(name = "customcachemanager") public cachemanager cachemanager( redistemplate redistemplate) { rediscachewriter writer = rediscachewriter.lockingrediscachewriter(redistemplate.getconnectionfactory()); rediscacheconfiguration config = rediscacheconfiguration.defaultcacheconfig().entryttl(duration.ofdays(2)); return new rediscachemanager(writer, config); } // 提供默认的cachemanager,应用于全局 @bean @primary public cachemanager defaultcachemanager( redistemplate redistemplate) { rediscachewriter writer = rediscachewriter.lockingrediscachewriter(redistemplate.getconnectionfactory()); rediscacheconfiguration config = rediscacheconfiguration.defaultcacheconfig(); return new rediscachemanager(writer, config); } }
关于“spring缓存cache怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。