package com.lunhan.xxx.common.cache; import com.lunhan.xxx.common.ConstantFactory; import org.springframework.cache.CacheManager; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.cache.RedisCacheManager; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.serializer.*; import java.time.Duration; @Configuration public class CacheManagerConfig { @Bean @Primary public CacheManager json4RedisCacheManager(RedisConnectionFactory redisConnectionFactory) { RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() //设置24å°æ—¶è¿‡æœŸ .entryTtl(Duration.ofMillis(ConstantFactory.TIME_LEN_24H)) //设置keyçš„åºåˆ—åŒ–æ–¹å¼ .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new RedisKeySerializer())) //设置值的åºåˆ—åŒ–æ–¹å¼ .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer())); RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager.RedisCacheManagerBuilder.fromConnectionFactory(redisConnectionFactory); //è¿”å›žæž„é€ çš„cacheManager return builder.transactionAware().cacheDefaults(config).build(); } @Bean public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) { StringRedisTemplate stringRedisTemplate = new StringRedisTemplate(redisConnectionFactory); stringRedisTemplate.setKeySerializer(new RedisKeySerializer()); return stringRedisTemplate; } @Bean public RedisTemplate<String, Object> objectRedisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisSerializer<String> serializer = new StringRedisSerializer(); Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); RedisTemplate<String, Object> template = new RedisTemplate<>(); template.setConnectionFactory(redisConnectionFactory); template.setKeySerializer(new RedisKeySerializer()); template.setValueSerializer(jackson2JsonRedisSerializer); template.setHashKeySerializer(serializer); template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; } }