当前位置:  开发笔记 > 编程语言 > 正文

如何将Spring Cache Redis与自定义RestTemplate一起使用?

如何解决《如何将SpringCacheRedis与自定义RestTemplate一起使用?》经验,为你挑选了1个好方法。

我正在将我的Spring应用程序从Spring-boot 1.5.9迁移到Spring-boot 2.0.0.有了这个新的Spring包,我在Redis中缓存数据时遇到了一些问题.

在我的配置中,我有3个不同的TTL(长,中,短)CacheManager:

@Bean(name = "longLifeCacheManager")
public CacheManager longLifeCacheManager() {
    RedisCacheConfiguration cacheConfiguration =
            RedisCacheConfiguration.defaultCacheConfig()
                    .entryTtl(Duration.ofSeconds(redisExpirationLong))
                    .disableCachingNullValues();
    return RedisCacheManager.builder(jedisConnectionFactory()).cacheDefaults(cacheConfiguration).build();
}

我还有一个自定义的RestTemplate:

@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory connectionFactory) {
    RedisTemplate template = new RedisTemplate<>();
    template.setDefaultSerializer(new GenericJackson2JsonRedisSerializer());
    template.setConnectionFactory(connectionFactory);
    return template;
}

使用之前的Spring版本,每个缓存的数据都使用此RestTemplate并使用GenericJackson2JsonRedisSerializer进行序列化.

使用新的Spring版本,CacheManager不使用RestTemplate,而是使用自己的SerializationPair.这个结果是使用默认的JdkSerializationRedisSerializer序列化的所有内容.

是否可以将CacheManager配置为使用RestTemplate以及如何使用?如果不可能,我该怎么做才能使用JacksonSerializer而不是JdkSerializer?



1> YLombardi..:

我终于找到了一个有效的解决方 我无法配置CacheManager来使用我的RedisTemplate,但我可以像这样设置Serializer:

@Bean(name = "longLifeCacheManager")
public CacheManager longLifeCacheManager(JedisConnectionFactory jedisConnectionFactory) {
    RedisCacheConfiguration cacheConfiguration =
            RedisCacheConfiguration.defaultCacheConfig()
                    .entryTtl(Duration.ofSeconds(redisExpirationLong))
                    .disableCachingNullValues()
                    .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
    return RedisCacheManager.builder(jedisConnectionFactory).cacheDefaults(cacheConfiguration).build();
}

serializeValuesWith方法是关键.

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有