RedisConfig.java 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package com.fdkk.fdkkmeta.config;
  2. import com.fasterxml.jackson.annotation.JsonAutoDetect;
  3. import com.fasterxml.jackson.annotation.JsonTypeInfo;
  4. import com.fasterxml.jackson.annotation.PropertyAccessor;
  5. import com.fasterxml.jackson.databind.ObjectMapper;
  6. import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
  7. import org.springframework.cache.annotation.CachingConfigurerSupport;
  8. import org.springframework.cache.annotation.EnableCaching;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.data.redis.connection.RedisConnectionFactory;
  12. import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
  13. import org.springframework.data.redis.core.RedisTemplate;
  14. import org.springframework.data.redis.core.script.DefaultRedisScript;
  15. import org.springframework.data.redis.serializer.StringRedisSerializer;
  16. /**
  17. * redis配置
  18. *
  19. * @author fdkk
  20. */
  21. @Configuration
  22. @EnableCaching
  23. public class RedisConfig
  24. {
  25. @Bean
  26. @SuppressWarnings(value = { "unchecked", "rawtypes" })
  27. public RedisTemplate<String,Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
  28. {
  29. RedisTemplate<String, Object> template = new RedisTemplate<>();
  30. template.setConnectionFactory(lettuceConnectionFactory);
  31. FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);
  32. ObjectMapper mapper = new ObjectMapper();
  33. mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  34. mapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
  35. serializer.setObjectMapper(mapper);
  36. // 使用StringRedisSerializer来序列化和反序列化redis的key值
  37. template.setKeySerializer(new StringRedisSerializer());
  38. template.setValueSerializer(serializer);
  39. // Hash的key也采用StringRedisSerializer的序列化方式
  40. template.setHashKeySerializer(new StringRedisSerializer());
  41. template.setHashValueSerializer(serializer);
  42. template.afterPropertiesSet();
  43. return template;
  44. }
  45. }}