EduTravelCacheConfig.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package edu.travel.cache.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 com.fasterxml.jackson.databind.module.SimpleModule;
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.context.annotation.Bean;
  10. import org.springframework.context.annotation.Configuration;
  11. import org.springframework.core.io.ClassPathResource;
  12. import org.springframework.data.redis.cache.RedisCacheConfiguration;
  13. import org.springframework.data.redis.connection.RedisConnectionFactory;
  14. import org.springframework.data.redis.core.RedisTemplate;
  15. import org.springframework.data.redis.core.script.DefaultRedisScript;
  16. import org.springframework.data.redis.core.script.RedisScript;
  17. import org.springframework.data.redis.listener.RedisMessageListenerContainer;
  18. import org.springframework.data.redis.serializer.*;
  19. import org.springframework.scripting.support.ResourceScriptSource;
  20. @Configuration
  21. public class EduTravelCacheConfig {
  22. // @Autowired
  23. // private RedisTemplate redisTemplate;
  24. // @Autowired
  25. // private RedisConnectionFactory redisConnectionFactory;
  26. @Bean
  27. public RedisCacheConfiguration redisCacheConfiguration(){
  28. RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
  29. //设置redis缓存值的序列化方式,此处采用json方式序列化
  30. redisCacheConfiguration = redisCacheConfiguration.
  31. serializeValuesWith(RedisSerializationContext.SerializationPair.
  32. fromSerializer(new GenericJackson2JsonRedisSerializer()));
  33. return redisCacheConfiguration;
  34. }
  35. // @Bean
  36. // public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory factory) {
  37. // redisTemplate.setConnectionFactory(factory);
  38. // Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<Object>(Object.class);
  39. // redisTemplate.setDefaultSerializer(serializer);
  40. // //设置序列化Key的实例化对象
  41. // redisTemplate.setKeySerializer(new StringRedisSerializer());
  42. // //设置序列化Value的实例化对象
  43. // redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
  44. //
  45. // return redisTemplate;
  46. // }
  47. //
  48. // @Bean
  49. // public RedisMessageListenerContainer redisContainer() {
  50. // final RedisMessageListenerContainer container = new RedisMessageListenerContainer();
  51. // container.setConnectionFactory(redisConnectionFactory);
  52. // return container;
  53. // }
  54. //
  55. // @Bean
  56. // public RedisScript<Long> limitRedisScript() {
  57. // DefaultRedisScript<Long> redisScript = new DefaultRedisScript<>();
  58. // redisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("scripts/limit.lua")));
  59. // redisScript.setResultType(Long.class);
  60. // return redisScript;
  61. // }
  62. // @Bean(name = "redisTemplate")
  63. // public RedisTemplate<String, Object> getRedisTemplate(RedisConnectionFactory factory) {
  64. // RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
  65. // redisTemplate.setConnectionFactory(factory);
  66. // RedisSerializer stringSerializer = new StringRedisSerializer();
  67. // redisTemplate.setKeySerializer(stringSerializer);
  68. // redisTemplate.setValueSerializer(stringSerializer);
  69. // redisTemplate.setHashKeySerializer(stringSerializer);
  70. // redisTemplate.setHashValueSerializer(stringSerializer);
  71. //// Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  72. //// ObjectMapper objectMapper = new ObjectMapper();
  73. //// // 使用Jackson序列化对象
  74. //// objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  75. //// objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance ,
  76. //// ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
  77. //// jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
  78. //// jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
  79. ////
  80. //// redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // value的序列化类型
  81. //// redisTemplate.setHashKeySerializer(stringRedisSerializer);
  82. //// redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
  83. // redisTemplate.afterPropertiesSet();
  84. // return redisTemplate;
  85. // }
  86. }