package cn.com.goldenwater.config; import org.springframework.cache.CacheManager; import org.springframework.cache.annotation.CachingConfigurerSupport; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import java.time.Duration; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; @Configuration public class RedisCacheConfig extends CachingConfigurerSupport { @Bean public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) { // 生成一个默认配置,通过config对象即可对缓存进行自定义配置 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig(); // 设置缓存的默认过期时间,也是使用Duration设置 config = config.entryTtl(Duration.ofMinutes(1)) // 不缓存空值 .disableCachingNullValues(); // 设置一个初始化的缓存空间set集合 Set cacheNames = new HashSet<>(); cacheNames.add("timeGroup"); cacheNames.add("user"); // 对每个缓存空间应用不同的配置 Map configMap = new HashMap<>(2); configMap.put("timeGroup", config); configMap.put("user", config.entryTtl(Duration.ofMinutes(1))); // 使用自定义的缓存配置初始化一个cacheManager return RedisCacheManager.builder(redisConnectionFactory) // 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置 .initialCacheNames(cacheNames) .withInitialCacheConfigurations(configMap) .build(); } }