redis系列三-springboot如何使用redis做缓存及缓存注解的用法总结
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
redis系列三-springboot如何使用redis做缓存及缓存注解的
用法总结
1. 概述
本文介绍spring boot 如何使用Redis做缓存,如何对redis 缓存进行定制化配置(如key的有效期)以及spring boot 如何初始化redis做缓存。使用具体的代码介绍了@Cacheable,@CacheEvict,@CachePut,@CacheConfig等注解及其属性的用法。
2. spring boot集成redis
2.1. application.properties
配置application.properties,包含如下信息:
指定缓存的类型
配置redis的服务器信息
请不要配置spring.cache.cache-names值,原因后面再说
## 缓存
# spring.cache.cache-names=book1,book2
spring.cache.type=REDIS
# REDIS (RedisProperties)
spring.redis.database=0
spring.redis.host=192.168.188.7
spring.redis.password=
spring.redis.port=6379
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.pool.max-active=100
spring.redis.pool.max-wait=-1123456789101112131234567891 0111213
2.2. 配置启动类
@EnableCaching: 启动缓存
重新配置RedisCacheManager,使用新的配置的值
@SpringBootApplication
@EnableCaching // 启动缓存
public class CacheApplication {
private static final Logger log =
LoggerFactory.getLogger(CacheApplication.class);
public static void main(String[] args) {
("Start CacheApplication.. ");
SpringApplication.run(CacheApplication.class, args);
}
/**
* 重新配置RedisCacheManager
* @param rd
*/
@Autowired
public void configRedisCacheManger(RedisCacheManager rd){
rd.setDefaultExpiration(100L);
}
}123456789101112131415161718192012345678910111213141 51617181920
经过以上配置后,redis缓存管理对象已经生成。下面简单介绍spring boot如何初始化redis缓存。
2.3. spring boot 如何初始化redis做缓存
缓存管理接口org.springframework.cache.CacheManager,spring boot就是通过此类实现缓存的管理。redis对应此接口的实现类是
org.springframework.data.redis.cache.RedisCacheManager。下
面介绍此类如何生成。
首先我们配置application.properties的spring.redis.* 属性后@EnableCaching后,spring会执行RedisAutoConfiguration,初始化RedisTemplate和StringRedisTemplate
@Configuration
@ConditionalOnClass({ JedisConnection.class, RedisOperations.class, Jedis.class })
@EnableConfigurationProperties(RedisProperties.class)
public class RedisAutoConfiguration {
/**
* Standard Redis configuration.
*/
@Configuration
protected static class RedisConfiguration {
….
@Bean
@ConditionalOnMissingBean(name = "redisTemplate")
public RedisTemplate redisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
RedisTemplate template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean(StringRedisTemplate.class) public StringRedisTemplate stringRedisTemplate(
RedisConnectionFactory redisConnectionFactory)
throws UnknownHostException {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
}
} 1234567891011121314151617181920212223242526272829303 1323334123456789101112131415161718192021222324252627 28293031323334