一尘不染

使用spring-data-redis 1.7.0.M1时如何配置redis-cluster

redis

我使用spring-data-redis版本1.7.0.M1和jedis版本2.8.0

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
    <property name="connectionFactory" ref="redisConnectionFactory"></property>
    <property name="keySerializer">
        <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    </property>
    <property name="hashKeySerializer">
        <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    </property>
    <property name="valueSerializer">
        <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
    </property>
    <property name="hashValueSerializer">
        <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
    </property>
</bean>

并使用【redisTemplate.opsForValue()。get(“ foo”)】进行测试

抛出异常

 org.springframework.dao.InvalidDataAccessApiUsageException: MOVED 12182 192.168.1.223:7002; nested exception is redis.clients.jedis.exceptions.JedisMovedDataException: MOVED 12182 192.168.1.223:7002

使用spring-data-redis 1.7.0.M1时如何配置redis-cluster?


阅读 505

收藏
2020-06-20

共1个答案

一尘不染

基本上,所需要做的只是在中设置群集节点的初始集合,RedisClusterConfiguration并将其提供给JedisConnectionFactoryLettuceConnectionFactory

@Configuration
class Config {

    List<String> clusterNodes = Arrays.asList("127.0.0.1:30001", "127.0.0.1:30002", "127.0.0.1:30003");

    @Bean
    RedisConnectionFactory connectionFactory() {
      return new JedisConnectionFactory(new RedisClusterConfiguration(clusterNodes));
    }

    @Bean
    RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {

      // just used StringRedisTemplate for simplicity here.
      return new StringRedisTemplate(factory);
    }
}

spring启动将提供配置属性(spring.redis.cluster.nodesspring.redis.cluster.max- redirects)在下一版本的Redis与分类工作。有关详细信息,请参见commit /
166a27

所述弹簧数据实例存储库中已包含的弹簧数据Redis的集群支持的例子。

2020-06-20