springCache+redis
application.properties 文件
#redis配置同学习笔记1
#cache配置缓存相关
cache.default.expire-time=200
cache.expire-time=180
cache.cacheName=test
RedisCacheConfig.java
@Configuration
@EnableCaching
public class RedisCacheConfig {
@Value("${cache.default.expire-time}")
private int defaultExpireTime;
@Value("${cache.expire-time}")
private int cacheExpireTime;
@Value("${cache.cacheName}")
private String cacheName;
/**
* 缓存管理器
*
* @param redisConnectionFactory
* @return
*/
@Bean
public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
// 生成一个默认配置,通过config对象即可对缓存进行自定义配置
RedisCacheConfiguration defaultCacheConfig = RedisCacheConfiguration.defaultCacheConfig();
// 设置缓存管理器管理的缓存的默认过期时间
defaultCacheConfig = defaultCacheConfig.entryTtl(Duration.ofSeconds(defaultExpireTime))
// 设置 key为string序列化
.serializeKeysWith(
RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
// 设置value为json序列化
.serializeValuesWith(RedisSerializationContext.SerializationPair
.fromSerializer(new GenericJackson2JsonRedisSerializer()))
// 不缓存空值
.disableCachingNullValues();
// 设置一个初始化的缓存空间set集合
Set<String> cacheNames = new HashSet<>();
cacheNames.add(cacheName);
// 对每个缓存空间应用不同的配置
Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
configMap.put(cacheName, defaultCacheConfig.entryTtl(Duration.ofSeconds(cacheExpireTime)));
// 使用自定义的缓存配置初始化一个cacheManager
RedisCacheManager cacheManager = RedisCacheManager.builder(redisConnectionFactory)
// 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置
.cacheDefaults(defaultCacheConfig).initialCacheNames(cacheNames)
.withInitialCacheConfigurations(configMap).build();
return cacheManager;
}
}
@Cacheable(value="keyName")
在接口添加注解