spring-data-redis 2.x с использованием RedisTemplate с RedisCacheManager и redisson для соединения - PullRequest
1 голос
/ 25 апреля 2020

Как мне определить 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())
                                                                           );
    }
...