工作中不免使用redis。本文介绍spring整合redis集群。使用jediscluster操作redis集群。
1.首先看一段jediscluster的一段源码
public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
int maxAttempts, String password, final GenericObjectPoolConfig poolConfig) {
super(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, password, poolConfig);
}
注意如果你的操作redis的jedis版本太低。则没有这个构造方法。可以上级到2.9.0;因为公司搭建的是带密码的redis集群。所以使用这个构造方法。
spring中如何管理这个类呢?直接上配置文件。
<!-- redis节点配置 -->
<bean id="node1" class=" redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="${redis.node1.host}"></constructor-arg>
<constructor-arg name="port" value="${redis.node1.port}"></constructor-arg>
</bean>
<bean id="node2" class=" redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="${redis.node2.host}"></constructor-arg>
<constructor-arg name="port" value="${redis.node2.port}"></constructor-arg>
</bean>
<bean id="node3" class=" redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="${redis.node3.host}"></constructor-arg>
<constructor-arg name="port" value="${redis.node3.port}"></constructor-arg>
</bean>
<bean id="node4" class=" redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="${redis.node4.host}"></constructor-arg>
<constructor-arg name="port" value="${redis.node4.port}"></constructor-arg>
</bean>
<bean id="node5" class=" redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="${redis.node5.host}"></constructor-arg>
<constructor-arg name="port" value="${redis.node5.port}"></constructor-arg>
</bean>
<bean id="node6" class=" redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="${redis.node6.host}"></constructor-arg>
<constructor-arg name="port" value="${redis.node6.port}"></constructor-arg>
</bean>
<bean id="poolConfig" class=" org.apache.commons.pool2.impl.GenericObjectPoolConfig">
<property name="maxTotal" value="1000"></property>
<property name="maxIdle" value="50"></property>
<property name="minIdle" value="10"></property>
</bean>
<!-- 注入到redisCluster -->
<bean id="redisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="jedisClusterNode">
<set>
<ref bean="node1"/>
<ref bean="node2"/>
<ref bean="node3"/>
<ref bean="node4"/>
<ref bean="node5"/>
<ref bean="node6"/>
</set>
</constructor-arg>
<constructor-arg name="connectionTimeout" value="12000000"></constructor-arg>
<constructor-arg name="soTimeout" value="120000"></constructor-arg>
<constructor-arg name="maxAttempts" value="120000"></constructor-arg>
<constructor-arg name="password" value="*****"></constructor-arg>
<constructor-arg name="poolConfig" ref="poolConfig"></constructor-arg>
</bean>
OK了。spring配置完了。如何使用呢?就更简单了。在使用redis的类中。直接注入这个属性就可以了。
如下:
//获取redis集群操作对象
@Autowired
private JedisCluster jedisCluster;
接着,你就可以测试者玩了。