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; 
 | 
    } 
 | 
} 
 |