spring 整合 redis cluster集群

搭建好redis cluster 集群之后,项目中使用起来很方便,只需要少量的配置 。

代码下载地址 http://download.csdn.net/detail/wangzhi291/9750657

新建一个配置文件redis.properties

#redis中心  
#redis的服务器地址  
redis.host=127.0.0.1  
#redis的服务端口  
redis.port=6379  
#密码  
redis.password=  
#最大空闲数  
redis.maxIdle=100  
#最大连接数  
redis.maxActive=300  
#最大建立连接等待时间  
redis.maxWait=1000  
#客户端超时时间单位是毫秒  
redis.timeout=100000  
redis.maxTotal=1000  
redis.minIdle=8  
#明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个  
redis.testOnBorrow=true  
  
#sentinel  
spring.redis.sentinel.master=mymaster  
spring.redis.sentinel.node1.host=127.0.0.1  
spring.redis.sentinel.node2.host=127.0.0.1  
spring.redis.sentinel.node3.host=127.0.0.1  
spring.redis.sentinel.node1.port=26379  
spring.redis.sentinel.node2.port=26479  
spring.redis.sentinel.node3.port=26579  
#sentinel  
  
#jediscluster  
cluster1.host.port=127.0.0.1:7000  
cluster2.host.port=127.0.0.1:7001  
cluster3.host.port=127.0.0.1:7002  
cluster4.host.port=127.0.0.1:7003  
cluster5.host.port=127.0.0.1:7004  
cluster6.host.port=127.0.0.1:7005 
#jediscluster  
  
#rediscluster  
spring.redis.cluster.nodes=127.0.0.1:7000,127.0.0.1:7001,127.0.0.1:7002,127.0.0.1:7003,127.0.0.1:7004,127.0.0.1:7005 
spring.redis.cluster.max-redirects=3  
#rediscluster  


然后新建一个spring 的配置文件 


<?xml version="1.0" encoding="UTF-8"?>  
<beans xmlns="http://www.springframework.org/schema/beans"  
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
       xmlns:p="http://www.springframework.org/schema/p"  
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd  
         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">  
  
<!-- 引入配置文件 -->  
    <bean id="propertyConfigurer"  
          class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location" value="classpath:redis.properties" />  
    </bean>  
  
    <!-- jedis 配置-->  
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig" >  
        <!--最大空闲数-->  
        <property name="maxIdle" value="${redis.maxIdle}" />  
        <!--最大建立连接等待时间-->  
        <property name="maxWaitMillis" value="${redis.maxWait}" />  
        <!--是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个-->  
        <property name="testOnBorrow" value="${redis.testOnBorrow}" />  
    </bean >  
  
    <!--配置文件加载-->  
    <bean id="resourcePropertySource" class="org.springframework.core.io.support.ResourcePropertySource">  
        <constructor-arg name="name" value="redis.properties"/>  
        <constructor-arg name="resource" value="classpath:redis.properties"/>  
    </bean>  
    <!--redisCluster配置-->  
    <bean id="redisClusterConfiguration" class="org.springframework.data.redis.connection.RedisClusterConfiguration">  
        <constructor-arg name="propertySource" ref="resourcePropertySource"/>  
    </bean>  
    <!-- redis服务器中心 -->  
    <bean id="connectionFactory"  class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" >  
       <constructor-arg name="clusterConfig" ref="redisClusterConfiguration"/>  
        <constructor-arg name="poolConfig" ref="poolConfig"/>  
        <property name="password" value="${redis.password}" />  
        <property name="timeout" value="${redis.timeout}" ></property>  
    </bean >  
    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" >  
        <property name="connectionFactory" ref="connectionFactory" />  
        <!--如果不配置Serializer,那么存储的时候缺省使用String,如果用User类型存储,那么会提示错误User can't cast to String!!  -->  
        <property name="keySerializer" >  
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />  
        </property>  
        <property name="valueSerializer" >  
            <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer" />  
        </property>  
        <property name="hashKeySerializer">  
            <bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>  
        </property>  
        <property name="hashValueSerializer">  
            <bean class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>  
        </property>  
    </bean >  
  
    <bean id="redisHttpSessionConfiguration"  
          class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration">  
       <!--超时时间,默认1800秒-->  
        <property name="maxInactiveIntervalInSeconds" value="1800" />  
    </bean>  
  
</beans>  


然后是java 测试代码

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("classpath:/spring-config.xml");
			JedisCluster jc = context.getBean(JedisCluster.class);
	        jc.set("wang", "321");  
	        for (int i = 0; i < 100; i++) {
	        	try {
					String value = jc.get("wang");  
					System.out.println(i+":"+value); 
					Thread.sleep(5000);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}

关闭wang 所在的redis ,大概在之后的10秒之后 就会自动指向从机。


猜你喜欢

转载自blog.csdn.net/wangzhi291/article/details/54945124
今日推荐