| package com.doumee.config.redis; | 
|   | 
| import com.fasterxml.jackson.annotation.JsonAutoDetect; | 
| import com.fasterxml.jackson.annotation.PropertyAccessor; | 
| import com.fasterxml.jackson.databind.ObjectMapper; | 
| import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; | 
| import org.springframework.context.annotation.Bean; | 
| import org.springframework.context.annotation.Configuration; | 
| import org.springframework.data.redis.connection.RedisConnectionFactory; | 
| import org.springframework.data.redis.core.RedisTemplate; | 
| import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; | 
| import org.springframework.data.redis.serializer.StringRedisSerializer; | 
|   | 
| import java.io.Serializable; | 
|   | 
| /** | 
|  * Redis配置 | 
|  * @author Eva.Caesar Liu | 
|  * @date 2023/04/17 12:11 | 
|  */ | 
| @Configuration | 
| public class RedisConfig { | 
|     @Bean | 
|     @SuppressWarnings("all") | 
|     public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { | 
|         RedisTemplate<String, Object> template = new RedisTemplate<String, Object>(); | 
|         template.setConnectionFactory(factory); | 
|         Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); | 
|         ObjectMapper om = new ObjectMapper(); | 
|         om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); | 
|         om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); | 
|         jackson2JsonRedisSerializer.setObjectMapper(om); | 
|         StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); | 
|         // key采用String的序列化方式 | 
|         template.setKeySerializer(stringRedisSerializer); | 
|         // hash的key也采用String的序列化方式 | 
|         template.setHashKeySerializer(stringRedisSerializer); | 
|         // value序列化方式采用jackson | 
|         template.setValueSerializer(jackson2JsonRedisSerializer); | 
|         // hash的value序列化方式采用jackson | 
|         template.setHashValueSerializer(jackson2JsonRedisSerializer); | 
|         template.afterPropertiesSet(); | 
|         return template; | 
|     } | 
|     @Bean | 
|     public RedisTemplate<Serializable, Serializable> redisTemplate2(RedisConnectionFactory redisConnectionFactory) { | 
|         RedisTemplate<Serializable, Serializable> redisTemplate = new RedisTemplate<>(); | 
|         redisTemplate.setConnectionFactory(redisConnectionFactory); | 
|         // 默认序列化方式 | 
|         redisTemplate.setDefaultSerializer(new StringRedisSerializer()); | 
|         // 值序列化方式 | 
|         RedisValueDefaultSerializer<Object> serializer = new RedisValueDefaultSerializer<>(Object.class); | 
|         redisTemplate.setValueSerializer(serializer); | 
|         redisTemplate.setHashValueSerializer(serializer); | 
|         redisTemplate.afterPropertiesSet(); | 
|         return redisTemplate; | 
|     } | 
| } |