轉載鏈接https://blog.csdn.net/sy793314598/article/details/80719224
@Bean public RedisCacheManager cacheManager(RedisConnectionFactory factory) { RedisSerializer<String> redisSerializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); //解決查詢緩存轉換異常的問題 ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); //配置序列化(解決亂碼的問題) RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() // .entryTtl(Duration.ZERO) .entryTtl(Duration.ofSeconds(15L)) //設置默認緩存15秒 .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)) .disableCachingNullValues(); Set<String> cacheNames = new HashSet<>(); cacheNames.add("emp"); cacheNames.add("dept"); // 對每個緩存空間應用不同的配置 Map<String, RedisCacheConfiguration> configMap = new HashMap<>(); configMap.put("emp", config); configMap.put("dept", config.entryTtl(Duration.ofSeconds(30L))); //這個緩存空間30秒 RedisCacheManager cacheManager = RedisCacheManager.builder(factory) .cacheDefaults(config) .initialCacheNames(cacheNames)// 注意這兩句的調用順序,一定要先調用該方法設置初始化的緩存名,再初始化相關的配置 .withInitialCacheConfigurations(configMap) .build(); return cacheManager;