| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- package org.example.config;
- import com.fasterxml.jackson.annotation.JsonAutoDetect;
- import com.fasterxml.jackson.annotation.JsonTypeInfo;
- import com.fasterxml.jackson.annotation.PropertyAccessor;
- import com.fasterxml.jackson.databind.ObjectMapper;
- import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
- import org.springframework.cache.CacheManager;
- import org.springframework.cache.annotation.EnableCaching;
- 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 org.springframework.data.redis.core.RedisTemplate;
- import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
- import org.springframework.data.redis.serializer.RedisSerializationContext;
- import org.springframework.data.redis.serializer.StringRedisSerializer;
- import java.time.Duration;
- /**
- * Redis配置类
- */
- @Configuration
- @EnableCaching
- public class RedisConfig {
- /**
- * 配置RedisTemplate
- */
- @Bean
- public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
- RedisTemplate<String, Object> template = new RedisTemplate<>();
- template.setConnectionFactory(connectionFactory);
- // 使用StringRedisSerializer来序列化和反序列化redis的key值
- StringRedisSerializer stringSerializer = new StringRedisSerializer();
- template.setKeySerializer(stringSerializer);
- template.setHashKeySerializer(stringSerializer);
- // 使用GenericJackson2JsonRedisSerializer来序列化和反序列化redis的value值
- GenericJackson2JsonRedisSerializer jsonSerializer = new GenericJackson2JsonRedisSerializer();
- template.setValueSerializer(jsonSerializer);
- template.setHashValueSerializer(jsonSerializer);
- template.afterPropertiesSet();
- return template;
- }
- /**
- * 配置缓存管理器
- */
- @Bean
- public CacheManager cacheManager(RedisConnectionFactory connectionFactory) {
- // 配置序列化
- RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
- // 设置缓存过期时间为30分钟
- .entryTtl(Duration.ofMinutes(30))
- // 设置key的序列化方式
- .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
- // 设置value的序列化方式
- .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()))
- // 不缓存null值
- .disableCachingNullValues();
- return RedisCacheManager.builder(connectionFactory)
- .cacheDefaults(config)
- .build();
- }
- }
|