标签:port prot text ram spring配置 cep dep ros data
Spring集成redis集群 有密码
<jedis.version>2.9.0</jedis.version> <spring-data-redis.version>1.7.1.RELEASE</spring-data-redis.version> <spring.version>3.2.17.RELEASE</spring.version> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>${jedis.version}</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>${spring-data-redis.version}</version> </dependency>
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- <property name="fairness" value="true" /> --> <property name="maxWaitMillis" value="${redis.maxWaitMillis}"/> <property name="maxTotal" value="${redis.maxTotal}"/> <property name="maxIdle" value="${redis.maxIdle}"/> <property name="minIdle" value="${redis.minIdle}"></property> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="true"></property> </bean> <bean id="redisClusterConfig" class="org.springframework.data.redis.connection.RedisClusterConfiguration"> <property name="maxRedirects" value="3"></property> <property name="clusterNodes"> <set> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.host1}"></constructor-arg> <constructor-arg name="port" value="${redis.port1}"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.host2}"></constructor-arg> <constructor-arg name="port" value="${redis.port2}"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.host3}"></constructor-arg> <constructor-arg name="port" value="${redis.port3}"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.host4}"></constructor-arg> <constructor-arg name="port" value="${redis.port4}"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.host5}"></constructor-arg> <constructor-arg name="port" value="${redis.port5}"></constructor-arg> </bean> <bean class="org.springframework.data.redis.connection.RedisNode"> <constructor-arg name="host" value="${redis.host6}"></constructor-arg> <constructor-arg name="port" value="${redis.port6}"></constructor-arg> </bean> </set> </property> </bean> <bean id="jedisConnectionFactory" class="com.web.common.redis.JedisConnectionFactory"> <constructor-arg name="clusterConfig" ref="redisClusterConfig" /> <property name="timeout" value="${redis.timeout}" /> <property name="password" value="${cluster.redis.pass}"></property> <property name="usePool" value="true"/> <property name="poolConfig" ref="jedisPoolConfig"/> </bean> <bean id="sessionManager" class="com.web.security.SessionManager"> <property name="connectionFactory" ref="jedisConnectionFactory"/> </bean>
reids.properties
#redis cluster
cluster.redis.pass=test@123
redis.host1=127.0.0.1
redis.port1=7001
redis.host2=127.0.0.1
redis.port2=7002
redis.host3=127.0.0.1
redis.port3=7003
redis.host4=127.0.0.1
redis.port4=7004
redis.host5=127.0.0.1
redis.port5=7005
redis.host6=127.0.0.1
redis.port6=7006
java相关
public class SessionManager extends StringRedisTemplate {
public void setTest(String key) { opsForValue().set(key, value); } private String getTest(String key) { String value = opsForValue().get(key); return value; } }
有可能会遇到的问题。
1、在redis集群没有设置密码之前 以上配置是可以用的。加上密码之后则出现
Jedis does not support password protected Redis Cluster configurations
if (StringUtils.hasText(this.getPassword())) { throw new IllegalArgumentException("Jedis does not support password protected Redis Cluster configurations!"); } else { return poolConfig != null ? new JedisCluster(hostAndPort, this.timeout, redirects, poolConfig) : new JedisCluster(hostAndPort, this.timeout, redirects, poolConfig); }
接着查看 JedisCluster构造方法里面竟然有密码的方法。
public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String password, GenericObjectPoolConfig poolConfig) { super(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, password, poolConfig); }
可能是Spring-data-redis版本过低,将Spring-data-redis版本升级到1.8.4就可以解决。
注意:再不想升级版本的情况可以修改Spring-data-redis的源码。
org.springframework.data.redis.connection.jedis.JedisConnectionFactory
如下:
int redirects = clusterConfig.getMaxRedirects() != null ? clusterConfig.getMaxRedirects() : 5; if (StringUtils.hasText(this.getPassword())) { /*throw new IllegalArgumentException("Jedis does not support password protected Redis Cluster configurations!");*/ return new JedisCluster(hostAndPort,this.timeout, this.timeout, redirects, this.getPassword(), poolConfig); } else { return poolConfig != null ? new JedisCluster(hostAndPort, this.timeout, redirects, poolConfig) : new JedisCluster(hostAndPort, this.timeout, redirects, poolConfig); }
这样就可以完美运行了。
NoSuchMethodError: org.springframework.core.serializer.support.DeserializingConverter.<init>(Ljava/lang/ClassLoader;)V。
将Spring版本升级到4.3.9.RELEASE就可以解决。
如有不对,请帮忙指出。
标签:port prot text ram spring配置 cep dep ros data
原文地址:https://www.cnblogs.com/zzrs/p/11333313.html