Как мне определить RedisCacheManager, используя свойства RedisTemplate?
В моем приложении нет аннотаций, связанных с Cacheable, поскольку оно использует RedisTemplate.
Поскольку spring-data- redis 2.x, конструктор для RedisCacheManager изменен с использования RedisOperations на RedisCacheWriter.
Нужно ли мне определять RedisCacheManager? У вас есть пример?
Я пытался найти инструмент для обхода, но я не вижу никаких хитов.
У меня есть этот метод:
@Bean
public CacheManager cacheManager(final RedisConnectionFactory redisConnectionFactory,
final Map<String, org.springframework.data.redis.cache.RedisCacheConfiguration> redisCacheConfigurations,
final MetricRegistry metricRegistry) throws Exception {
final var redisCacheManager = RedisCacheManager.RedisCacheManagerBuilder
.fromConnectionFactory(redisConnectionFactory)
.transactionAware()
.disableCreateOnMissingCache()
.withInitialCacheConfigurations(redisCacheConfigurations)
.build();
redisCacheManager.afterPropertiesSet();
final var rawRedisCacheManager = new SimpleCacheManager();
rawRedisCacheManager.setCaches(ImmutableList.of(
((TransactionAwareCacheDecorator) redisCacheManager.getCache(appId + '-' + quoteCacheNamespace)).getTargetCache(),
((TransactionAwareCacheDecorator) redisCacheManager.getCache(appId + '-' + fxCacheNamespace)).getTargetCache())
);
rawRedisCacheManager.afterPropertiesSet();
return InstrumentedCacheManager.instrument(rawRedisCacheManager, metricRegistry);
}
private org.springframework.data.redis.cache.RedisCacheConfiguration quotesRedisCache(final RedisTemplate quoteRedisTemplate) {
// Number of seconds before expiration. Defaults to unlimited (0)
final Duration expiration = Duration.ofSeconds(redisQuotesCacheExpiryMinsDefault * 60L);
return org.springframework.data.redis.cache.RedisCacheConfiguration.defaultCacheConfig()
.disableKeyPrefix()
.disableCachingNullValues()
.entryTtl(expiration)
.disableCachingNullValues()
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(quoteRedisTemplate.getKeySerializer()))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(quoteRedisTemplate.getValueSerializer())
);
}