在linux上使用redis3 完成集群,本人使用一台服务器,创建了6个node几点,其中3个主从。
端口分别为:7000、7001、7002、7003、7004、7005
启动各个node并启动集群。
在此配置Spring的redis cluster(使用jedis2.7.3jar):
<bean id="hostport1" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.152.132"/>
<constructor-arg name="port" value="7000"/>
</bean>
<bean id="hostport2" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.152.132"/>
<constructor-arg name="port" value="7001"/>
</bean>
<bean id="hostport3" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.152.132"/>
<constructor-arg name="port" value="7002"/>
</bean>
<bean id="hostport4" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.152.132"/>
<constructor-arg name="port" value="7003"/>
</bean>
<bean id="hostport5" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.152.132"/>
<constructor-arg name="port" value="7004"/>
</bean>
<bean id="hostport6" class="redis.clients.jedis.HostAndPort">
<constructor-arg name="host" value="192.168.152.132"/>
<constructor-arg name="port" value="7005"/>
</bean>
<pre name="code" class="java"><bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
</bean>
<bean id="redisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg name="nodes">
<set>
<ref bean="hostport1"/>
<ref bean="hostport2"/>
<ref bean="hostport3"/>
<ref bean="hostport4"/>
<ref bean="hostport5"/>
<ref bean="hostport6"/>
</set>
</constructor-arg>
<constructor-arg name="timeout" value="6000"/>
<constructor-arg name="poolConfig">
<ref bean="jedisPoolConfig"/>
</constructor-arg>
</bean>
以上为主要配置,我们可以注入cluster进行操作,测试代码如下:
public static JedisCluster jedisCluster;
static {
ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-redis.xml");
jedisCluster = (JedisCluster)ac.getBean("redisCluster");
}
public void set(String key, String value) {
jedisCluster.set(key, value);
}
public static void main(String[] args) {
jedisCluster.set("key1", "helloword123!!");
System.out.println(jedisCluster.get("key1"));
}
在真正的项目中,可以写入一个JedisUtils类,方便我们使用。
(注意,如果在测试中一直出现链接异常错误,请确保linux已对外开放7000等端口。我也是被这坑惨了,外开放端口了。)