以下是代码片段,可以很好地连接到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;
}
但是在尝试建立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'的bean时出错:通过字段'redisService'表示的不满足的依赖关系;嵌套的异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建名称为'redisService'的bean时出错:通过字段'repo'表示的不满足的依赖关系;嵌套异常是org.springframework.beans.factory.BeanCreationException:创建名称为'scheduledOperationRepository'的bean时出错:在设置bean属性'keyValueOperations'时无法解析对bean'redisKeyValueTemplate'的引用;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为'redisKeyValueTemplate'的bean时出错:在设置构造函数参数时无法解析对bean'redisKeyValueAdapter'的引用;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建名称为'redisKeyValueAdapter'的bean时出错:在设置构造函数参数时无法解析对bean'redisTemplate'的引用;嵌套的异常是org.springframework.beans.factory.UnsatisfiedDependencyException:创建在类路径资源[demo / config / RedisConfig.class]中定义的名称为'redisTemplate'的bean时出错:通过方法'redisTemplate'参数0表示的不满足的依赖关系;嵌套的异常是org.springframework.beans.factory.BeanCreationException:创建在类路径资源[demo / config / RedisConfig.class]中定义的名称为'connectionFactory'的bean时出错:调用init方法失败;嵌套的例外是redis.clients.jedis.exceptions.JedisDataException:不允许使用ERR命令 在上org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor $ AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643)〜[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]
有人可以指引我正确的方向...谢谢