栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring Boot Redis 组件配置

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring Boot Redis 组件配置

配置示例
@Configuration
public class RedisConfig {
   //基于注解的序列化设置
   @Bean
   public RedisCacheManager redisCacheManager(RedisConnectionFactory redisConnectionFactory, CacheProperties cacheProperties) {
      //序列化方式,分别为String格式和Json格式
      RedisSerializer stringRedisSerializer = new StringRedisSerializer();
      Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
      //json与对象转换的核心类
      ObjectMapper om = new ObjectMapper();
      //解决查询缓存转换异常问题
      om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
      om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
      //设置转换核心类
      jackson2JsonRedisSerializer.setObjectMapper(om);
      //用于读取配置文件,内部使用@ConfigurationProperties(prefix = "spring.cache")注解
      CacheProperties.Redis redisProperties = cacheProperties.getRedis();
      RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();
      // 指定key缓存序列化方式为String
      config=config.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(stringRedisSerializer));
      // 指定value缓存序列化方式为json
      config = config.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer));
      // 设置配置文件中的各项配置,如过期时间,选择性配置
      config = config.entryTtl(Duration.ofDays(1));
      config = config.prefixKeysWith(redisProperties.getKeyPrefix());
      config = config.disableCachingNullValues();
      config = config.disableKeyPrefix();
      
      RedisCacheManager redisCacheManager=RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(config).build();
      return redisCacheManager;
   }
   //基于api的序列化设置
   @Bean
   public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
      RedisTemplate template = new RedisTemplate<>();
      //序列化方式,分别为String格式和Json格式
      RedisSerializer stringRedisSerializer = new StringRedisSerializer();
      Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
      //json与对象转换的核心类
      ObjectMapper om = new ObjectMapper();
      //解决查询缓存转换异常问题
      om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
      om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
      //设置转换核心类
      jackson2JsonRedisSerializer.setObjectMapper(om);
      template.setConnectionFactory(factory);
      //设置默认序列化方式,下面单独设置会覆盖默认
      template.setDefaultSerializer(jackson2JsonRedisSerializer);
      //key序列化方式为string格式
      template.setKeySerializer(stringRedisSerializer);
      //value序列化为Json格式
      template.setValueSerializer(jackson2JsonRedisSerializer);
      //value hashmap序列化为Json格式
      template.setHashKeySerializer(jackson2JsonRedisSerializer);
      template.setHashValueSerializer(jackson2JsonRedisSerializer);
      return template;
   }
}
ObjectMapper

用于JSON与对象间转换
Java使用ObjectMapper的简单示例 - Fire♪一度 - 博客园 (cnblogs.com)

四种序列化方式

Redis - RedisTemplate及4种序列化方式深入解读 - 云+社区 - 腾讯云 (tencent.com)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/860490.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号