更新Redis配置

This commit is contained in:
阿沐 2024-04-01 09:51:32 +08:00
parent 18307a2312
commit f7e1d109fe

View File

@ -1,9 +1,14 @@
package net.maku.framework.common.config; package net.maku.framework.common.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.data.redis.serializer.RedisSerializer;
/** /**
@ -15,18 +20,29 @@ import org.springframework.data.redis.serializer.RedisSerializer;
@Configuration @Configuration
public class RedisConfig { public class RedisConfig {
public GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer() {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
objectMapper.registerModule(new JavaTimeModule());
objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL);
return new GenericJackson2JsonRedisSerializer(objectMapper);
}
@Bean @Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> template = new RedisTemplate<>(); RedisTemplate<String, Object> template = new RedisTemplate<>();
// Key HashKey使用String序列化 // Key HashKey使用String序列化
template.setKeySerializer(RedisSerializer.string()); template.setKeySerializer(RedisSerializer.string());
template.setHashKeySerializer(RedisSerializer.string()); template.setHashKeySerializer(RedisSerializer.string());
// Value HashValue使用Json序列化 // Value HashValue使用Json序列化
template.setValueSerializer(RedisSerializer.json()); template.setValueSerializer(genericJackson2JsonRedisSerializer());
template.setHashValueSerializer(RedisSerializer.json()); template.setHashValueSerializer(genericJackson2JsonRedisSerializer());
template.setConnectionFactory(factory); template.setConnectionFactory(factory);
template.afterPropertiesSet();
return template; return template;
} }
} }