1. 程式人生 > >JedisCluster連線redis叢集(有密碼)

JedisCluster連線redis叢集(有密碼)

redis叢集是通過redis-trib.rb方式構建,在連線之前需要匯入Jedis包
1.配置檔案

###############################redis資料庫的相關配置##################################
##訪問密碼
redis.auth = yangfuren
##控制一個pool最多可以有多少個狀態為Idle(空)的jedis例項預設值為8
redis.maxIdle = 200
##可用的最大連線例項數 預設為8
redis.maxActive = 1024
##等待可用連線的最大時間單位為毫秒  預設為-1表示永不超時,一旦超過等待時間則直接丟擲
redis.maxWait = 10000 redis.timeOut = 10000 ##設定為true則會在borrow一個jedis例項時,提前做validate操作 redis.testOnBorrow =true ##連線最小空閒時間(毫秒) redis.minEvictableIdleTimeMillis=1800000 ##釋放連線的掃描間隔(毫秒) redis.timeBetweenEvictionRunsMillis=30000 ##每次釋放連線的最大數目 redis.numTestsPerEvictionRun=1024 ##最大連線數 redis.maxTotal=30 ##在空閒時檢查有效性, 預設false
redis.testWhileIdle=true ##連線耗盡時是否阻塞, false報異常,ture阻塞直到超時, 預設true redis.blockWhenExhausted=false redis.sockettimeout=1000 redis.maxAttempts=1000 #叢集 cluster.host1=ip cluster.port1=6380 cluster.port2=6381 cluster.port3=6382 cluster.port4=6383 cluster.port5=6384 cluster.port6=6385

spring的application.xml中配置

<!-- redis連線池配置 -->
    <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <!-- 最大連線數 -->
        <property name="maxTotal" value="${redis.maxTotal}"/>
        <!-- 最大空閒連線數 -->
        <property name="maxIdle" value="${redis.maxIdle}"/>
        <!-- 每次釋放連線的最大數目 -->
        <property  name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}"/>
        <!-- 釋放連線的掃描間隔(毫秒) -->
        <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}"/>
        <!-- 連線最小空閒時間 -->
        <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}"/>
        <!-- 連線空閒多久後釋放, 當空閒時間>該值且空閒連線>最大空閒連線數時直接釋放 -->
        <property name="softMinEvictableIdleTimeMillis" value="10000"/>
        <!-- 獲取連線時的最大等待毫秒數,小於零:阻塞不確定的時間,預設-1 -->
        <property name="maxWaitMillis" value="${redis.maxWait}"/>
        <!-- 在獲取連線的時候檢查有效性, 預設false -->
        <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
        <!-- 在空閒時檢查有效性, 預設false -->
        <property name="testWhileIdle" value="${redis.testWhileIdle}"/>
        <!-- 連線耗盡時是否阻塞, false報異常,ture阻塞直到超時, 預設true -->
        <property name="blockWhenExhausted" value="${redis.blockWhenExhausted}"/>
    </bean>

    <!-- redis單機通過連線池
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool"
        destroy-method="close">
           <constructor-arg index="0" ref="jedisPoolConfig"/>  
          <constructor-arg index="1" value="${redis.addr}"/>  
          <constructor-arg index="2" value="${redis.port}" type="int"/>  
          <constructor-arg index="3" value="${redis.timeOut}" type="int"/>  
          <constructor-arg index="4" value="${redis.auth}"/>  
    </bean>
     -->

    <!-- redis叢集 -->
     <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">  
    <constructor-arg index="0">  
        <set>  
            <bean class="redis.clients.jedis.HostAndPort">  
                <constructor-arg index="0" value="${cluster.host1}"></constructor-arg>  
                <constructor-arg index="1" value="${cluster.port1}"></constructor-arg>  
            </bean>  
            <bean class="redis.clients.jedis.HostAndPort">  
                <constructor-arg index="0" value="${cluster.host1}"></constructor-arg>  
                <constructor-arg index="1" value="${cluster.port2}"></constructor-arg>  
            </bean>  
            <bean class="redis.clients.jedis.HostAndPort">  
                <constructor-arg index="0" value="${cluster.host1}"></constructor-arg>  
                <constructor-arg index="1" value="${cluster.port3}"></constructor-arg>  
            </bean>  
            <bean class="redis.clients.jedis.HostAndPort">  
                <constructor-arg index="0" value="${cluster.host1}"></constructor-arg>  
                <constructor-arg index="1" value="${cluster.port4}"></constructor-arg>  
            </bean>  
            <bean class="redis.clients.jedis.HostAndPort">  
                <constructor-arg index="0" value="${cluster.host1}"></constructor-arg>  
                <constructor-arg index="1" value="${cluster.port5}"></constructor-arg>  
            </bean>  
            <bean class="redis.clients.jedis.HostAndPort">  
                <constructor-arg index="0" value="${cluster.host1}"></constructor-arg>  
                <constructor-arg index="1" value="${cluster.port6}"></constructor-arg>  
            </bean>  
        </set>  
    </constructor-arg>  
    <constructor-arg index="1" value="${redis.timeOut}"></constructor-arg>  
    <constructor-arg index="2" value="${redis.sockettimeout}"></constructor-arg>  
    <constructor-arg index="3" value="${redis.maxAttempts}"></constructor-arg>  
    <constructor-arg index="4" value="${redis.auth}"></constructor-arg>  
    <constructor-arg index="5" ref="jedisPoolConfig"></constructor-arg>  
</bean>  

呼叫時候通過
@Resource
private SimpleRedisCluster simpleRedisCluster;
注入後呼叫即可