MyRedisConfig.java 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package com.sky.ioc.config;
  2. import org.springframework.cache.annotation.EnableCaching;
  3. import org.springframework.context.annotation.Bean;
  4. import org.springframework.context.annotation.Configuration;
  5. import org.springframework.data.redis.connection.RedisConnectionFactory;
  6. import org.springframework.data.redis.core.RedisTemplate;
  7. import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
  8. import org.springframework.data.redis.serializer.RedisSerializer;
  9. import org.springframework.data.redis.serializer.StringRedisSerializer;
  10. @EnableCaching
  11. @Configuration
  12. public class MyRedisConfig {
  13. // @Primary
  14. // @Bean
  15. // public CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory){
  16. // RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
  17. // redisCacheConfiguration = redisCacheConfiguration
  18. // // 设置缓存的默认超时时间:30分钟
  19. // .entryTtl(Duration.ofMillis(30l))
  20. // // 如果是空值,不缓存
  21. // .disableCachingNullValues()
  22. // // 设置key序列号器
  23. // .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(keySerialization()))
  24. // // 设置value序列号器
  25. // .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(valueSerialization()));
  26. //
  27. // return RedisCacheManager
  28. // .builder(RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory))
  29. // .cacheDefaults(redisCacheConfiguration)
  30. // .build();
  31. // }
  32. //
  33. // // key序列号器
  34. // private RedisSerializer<String> keySerialization(){
  35. // return new StringRedisSerializer();
  36. // }
  37. // // value序列号器
  38. // private RedisSerializer<Object> valueSerialization(){
  39. // return new GenericJackson2JsonRedisSerializer();
  40. // }
  41. @Bean(name = "redisTemplate")
  42. public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
  43. RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
  44. ////参照StringRedisTemplate内部实现指定序列化器
  45. redisTemplate.setConnectionFactory(redisConnectionFactory);
  46. redisTemplate.setKeySerializer(keySerializer());
  47. redisTemplate.setHashKeySerializer(keySerializer());
  48. redisTemplate.setValueSerializer(valueSerializer());
  49. redisTemplate.setHashValueSerializer(valueSerializer());
  50. return redisTemplate;
  51. }
  52. private RedisSerializer<String> keySerializer(){
  53. return new StringRedisSerializer();
  54. }
  55. //使用Jackson序列化器
  56. private RedisSerializer<Object> valueSerializer(){
  57. return new GenericJackson2JsonRedisSerializer();
  58. }
  59. }