当前位置:   article > 正文

RedisTemplate的工具类_redistemplate工具类

redistemplate工具类

第一种

RedisTemplate需要每次都指定key value以及field的序列化方式,能不能搞一个配置类,已经为RedisTemplate指定好序列化。以后再用就无需指定。

  1. @Bean
  2. public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
  3. RedisTemplate<String, Object> template = new RedisTemplate<>();
  4. RedisSerializer<String> redisSerializer = new StringRedisSerializer();
  5. Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  6. ObjectMapper om = new ObjectMapper();
  7. om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  8. om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  9. jackson2JsonRedisSerializer.setObjectMapper(om);
  10. template.setConnectionFactory(factory);
  11. //key序列化方式
  12. template.setKeySerializer(redisSerializer);
  13. //value序列化
  14. template.setValueSerializer(jackson2JsonRedisSerializer);
  15. //value hashmap序列化 filed value
  16. template.setHashValueSerializer(jackson2JsonRedisSerializer);
  17. template.setHashKeySerializer(redisSerializer);
  18. return template;
  19. }

第二种

我们可以AOP完成缓存代码和业务代码分离。

spring框架它应该也能想到。--使用注解即可完成。解析该注解。

  1. @Bean
  2. public CacheManager cacheManager(RedisConnectionFactory factory) {
  3. RedisSerializer<String> redisSerializer = new StringRedisSerializer();
  4. Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
  5. //解决查询缓存转换异常的问题
  6. ObjectMapper om = new ObjectMapper();
  7. om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
  8. om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
  9. jackson2JsonRedisSerializer.setObjectMapper(om);
  10. // 配置序列化(解决乱码的问题),过期时间600秒
  11. RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
  12. .entryTtl(Duration.ofSeconds(600)) //缓存过期10分钟 ---- 业务需求。
  13. .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))//设置key的序列化方式
  14. .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)) //设置value的序列化
  15. .disableCachingNullValues();
  16. RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
  17. .cacheDefaults(config)
  18. .build();
  19. return cacheManager;
  20. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/240483
推荐阅读
相关标签
  

闽ICP备14008679号