我使用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?
基本上,所需要做的只是在中设置群集节点的初始集合,RedisClusterConfiguration并将其提供给JedisConnectionFactory或LettuceConnectionFactory。
RedisClusterConfiguration
JedisConnectionFactory
LettuceConnectionFactory
@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.nodes,spring.redis.cluster.max- redirects)在下一版本的Redis与分类工作。有关详细信息,请参见commit / 166a27。
spring.redis.cluster.nodes
spring.redis.cluster.max- redirects
所述弹簧数据实例存储库中已包含的弹簧数据Redis的集群支持的例子。