package edu.travel.cache.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 com.fasterxml.jackson.databind.module.SimpleModule; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.io.ClassPathResource; import org.springframework.data.redis.cache.RedisCacheConfiguration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.script.DefaultRedisScript; import org.springframework.data.redis.core.script.RedisScript; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.serializer.*; import org.springframework.scripting.support.ResourceScriptSource; @Configuration public class EduTravelCacheConfig { // @Autowired // private RedisTemplate redisTemplate; // @Autowired // private RedisConnectionFactory redisConnectionFactory; @Bean public RedisCacheConfiguration redisCacheConfiguration(){ RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig(); //设置redis缓存值的序列化方式,此处采用json方式序列化 redisCacheConfiguration = redisCacheConfiguration. serializeValuesWith(RedisSerializationContext.SerializationPair. fromSerializer(new GenericJackson2JsonRedisSerializer())); return redisCacheConfiguration; } // @Bean // public RedisTemplate redisTemplate(RedisConnectionFactory factory) { // redisTemplate.setConnectionFactory(factory); // Jackson2JsonRedisSerializer serializer = new Jackson2JsonRedisSerializer(Object.class); // redisTemplate.setDefaultSerializer(serializer); // //设置序列化Key的实例化对象 // redisTemplate.setKeySerializer(new StringRedisSerializer()); // //设置序列化Value的实例化对象 // redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer()); // // return redisTemplate; // } // // @Bean // public RedisMessageListenerContainer redisContainer() { // final RedisMessageListenerContainer container = new RedisMessageListenerContainer(); // container.setConnectionFactory(redisConnectionFactory); // return container; // } // // @Bean // public RedisScript limitRedisScript() { // DefaultRedisScript redisScript = new DefaultRedisScript<>(); // redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("scripts/limit.lua"))); // redisScript.setResultType(Long.class); // return redisScript; // } // @Bean(name = "redisTemplate") // public RedisTemplate getRedisTemplate(RedisConnectionFactory factory) { // RedisTemplate redisTemplate = new RedisTemplate(); // redisTemplate.setConnectionFactory(factory); // RedisSerializer stringSerializer = new StringRedisSerializer(); // redisTemplate.setKeySerializer(stringSerializer); // redisTemplate.setValueSerializer(stringSerializer); // redisTemplate.setHashKeySerializer(stringSerializer); // redisTemplate.setHashValueSerializer(stringSerializer); //// Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); //// ObjectMapper objectMapper = new ObjectMapper(); //// // 使用Jackson序列化对象 //// objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); //// objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance , //// ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY); //// jackson2JsonRedisSerializer.setObjectMapper(objectMapper); //// jackson2JsonRedisSerializer.setObjectMapper(objectMapper); //// //// redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // value的序列化类型 //// redisTemplate.setHashKeySerializer(stringRedisSerializer); //// redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); // redisTemplate.afterPropertiesSet(); // return redisTemplate; // } }