Как создать RedisTemplate с помощью Redis Cluster - PullRequest
0 голосов
/ 13 января 2020

Ниже приведен фрагмент кода, который отлично работает для подключения к экземпляру Redis и выполнения операций CRUD. (Один экземпляр)

@Bean
public JedisConnectionFactory connectionFactory() {
    RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(redisUri, redisPort);
    config.setPassword(redisPassword);

    JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration
            .builder();
    jedisClientConfiguration.connectTimeout(Duration.ofMillis(120000));
    jedisClientConfiguration.usePooling();

    return new JedisConnectionFactory(config, jedisClientConfiguration.build());
}

@Bean
public RedisTemplate<String, Object> redisTemplate(JedisConnectionFactory jedisConnectionFactory) {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
    redisTemplate.setConnectionFactory(jedisConnectionFactory);
    return redisTemplate;
}

Но при попытке установить sh RedisClusterConfiguration и создать RedisTemplate со следующими ошибками ... (несколько экземпляров)

/*
 * spring.redis.cluster.nodes[0] = 127.0.0.1:7379 spring.redis.cluster.nodes[1]
 * = 127.0.0.1:7380 ...
 */
   @Bean
   public JedisConnectionFactory connectionFactory() {
    RedisClusterConfiguration clusterConfig = new RedisClusterConfiguration(clusterProperties.getNodes());
    clusterConfig.setPassword(redisPassword);

    JedisClientConfiguration.JedisClientConfigurationBuilder jedisClientConfiguration = JedisClientConfiguration
            .builder();
    jedisClientConfiguration.connectTimeout(Duration.ofMillis(120000));
    jedisClientConfiguration.usePooling();

    return new JedisConnectionFactory(clusterConfig, jedisClientConfiguration.build());
}

@Bean
public RedisTemplate<String, Object> redisTemplate(JedisConnectionFactory jedisConnectionFactory) {
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
    redisTemplate.setConnectionFactory(jedisConnectionFactory);
    return redisTemplate;
}

org.springframework.beans .factory.UnsatisfiedDependencyException: Ошибка создания компонента с именем 'redisCacheApplication': Неудовлетворенная зависимость, выраженная через поле 'redisService'; Вложенное исключение - org.springframework.beans.factory.UnsatisfiedDependencyException: Ошибка при создании bean-компонента с именем 'redisService': Неудовлетворенная зависимость, выраженная через поле 'repo'; вложенное исключение: org.springframework.beans.factory.BeanCreationException: Ошибка создания компонента с именем scheduleOperationRepository: невозможно разрешить ссылку на компонент redisKeyValueTemplate при установке свойства компонента keyValueOperations; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'redisKeyValueTemplate': невозможно разрешить ссылку на бин 'redisKeyValueAdapter' при установке аргумента конструктора; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания бина с именем 'redisKeyValueAdapter': невозможно разрешить ссылку на бин 'redisTemplate' при установке аргумента конструктора; вложенным исключением является org.springframework.beans.factory.UnsatisfiedDependencyException: ошибка при создании bean-компонента с именем 'redisTemplate', определенным в ресурсе пути к классу [demo / config / RedisConfig.class]: неудовлетворенная зависимость, выражаемая параметром 0 метода redisTemplate; вложенное исключение - org.springframework.beans.factory.BeanCreationException: ошибка создания компонента с именем 'connectionFactory', определенным в ресурсе пути к классу [demo / config / RedisConfig.class]: сбой вызова метода init; вложенное исключение - redis.clients.jedis.exceptions.JedisDataException: команда ERR недопустима в org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject ~ 123ean.OnjectEgn.OnE. [spring-beans-5.2.2.RELEASE.jar: 5.2.2.RELEASE] в org.springframework.beans.factory.annotation.InjectionMetadata.inject (InjectionMetadata. java: 116) ~ [spring-beans-5.2. 2.RELEASE.jar: 5.2.2.RELEASE]

Может ли кто-нибудь направить меня в правильном направлении ... Спасибо

...