在Spring项目中整合Spring Cache,使用Redis作为缓存数据库
Spring Cache简介
几个重要概念&缓存注解
1.@Cacheable 主要针对方法配置,能够根据方法的请求参数对其结果进行缓存
2.@CacheEvict 清空缓存
3.@CachePut 保证方法被调用,又希望结果被缓存。
4.@EnableCaching 开启基于注解的缓存
注解中参数详解
接下来用一个Demo来演示如何在Spring Boot集成Cache
1.pom.xml配置(部分)由于demo中还使用了mysql作为持久化数据库,故这里需要集成mybatis
2.spiring boot配置文件 这里配置了mysql的连接信息,以及Redis的连接信息,以及mybatis映射文件
3.在启动类中加上注解 @EnableCaching
4.在需要缓存数据的方法上加上注解
在这里演示 @Cacheable,@CacheEvict和@CachePut,以及其中参数的含义
1.@Cacheable的使用,在下图查询方法中在方法体上方加上 @Cacheable,其中value表示其在缓存数据库中命名空间。如图所示在Redis数据库中其名称为userCache::SimpleKey。在调用该方法时首先会在Redis中查询是否有命名空间为userCache::SimpleKey的缓存数据,如果有则直接返回,不执行方法,如果没有则会执行方法,并将返回结果加入到缓存数据库中,命名空间为userCache::SimpleKey。
2.@CacheEvict
在方法上加上这个注解,方法会执行,并且会在执行方法后清除命名空间为UserCache下的数据。由于我这里设置allEntries=true 所有会清楚这个命名空间下的所有数据。当执行更新数据库操作时常用这个注解来保证缓存数据数据始终是最新数据。
3.@CachePut
@CachePut与@Cacheable都是将方法返回结果加入缓存,但不同的是@CachePut会执行方法内部语句,而@Cacheable在缓存数据库中有语句的时候不会执行方法而会直接返回结果。