1. 程式人生 > >reids叢集學習(二)使用jedis實現redis叢集客戶端

reids叢集學習(二)使用jedis實現redis叢集客戶端

上一節我記錄瞭如何搭建redis官方的叢集,這節我就開始講怎麼用jedis實現叢集環境下的客戶端。
jedis中實現叢集的客戶端類是redis.clients.jedis.JedisCluster,裡面有好多個構造方法,上一節中我們搭建的叢集環境是有密碼的,所以我用了這個構造方法

public JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout,
                      int maxAttempts, String password, final
GenericObjectPoolConfig poolConfig) { super(jedisClusterNode, connectionTimeout, soTimeout, maxAttempts, password, poolConfig); }

接下來就是spring的配置了

 <context:property-placeholder location="classpath:redisConfig.properties" />

    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"
>
<!--最大空閒數--> <property name="maxIdle" value="${redis.maxIdle}" /> <!--連線池的最大資料庫連線數 --> <property name="maxTotal" value="${redis.maxTotal}" /> <!--最大建立連線等待時間--> <property name="maxWaitMillis" value="${redis.maxWaitMillis}"
/>
<!--逐出連線的最小空閒時間 預設1800000毫秒(30分鐘)--> <property name="minEvictableIdleTimeMillis" value="${redis.minEvictableIdleTimeMillis}" /> <!--每次逐出檢查時 逐出的最大數目 如果為負數就是 : 1/abs(n), 預設3--> <property name="numTestsPerEvictionRun" value="${redis.numTestsPerEvictionRun}" /> <!--逐出掃描的時間間隔(毫秒) 如果為負數,則不執行逐出執行緒, 預設-1--> <property name="timeBetweenEvictionRunsMillis" value="${redis.timeBetweenEvictionRunsMillis}" /> <!--是否在從池中取出連線前進行檢驗,如果檢驗失敗,則從池中去除連線並嘗試取出另一個--> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> <!--在空閒時檢查有效性, 預設false --> <property name="testWhileIdle" value="${redis.testWhileIdle}" /> </bean> <!--redis-cluster配置--> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <!--此處用的是jedis的其中一個構造方法--> <!--JedisCluster(Set<HostAndPort> jedisClusterNode, int connectionTimeout, int soTimeout, int maxAttempts, String password, final GenericObjectPoolConfig poolConfig)--> <constructor-arg index="0"> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="10.2.72.115" /> <constructor-arg index="1" value="7000" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="10.2.72.115" /> <constructor-arg index="1" value="7001" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="10.2.72.115" /> <constructor-arg index="1" value="7002" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="10.2.72.115" /> <constructor-arg index="1" value="7003" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="10.2.72.115" /> <constructor-arg index="1" value="7004" /> </bean> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg index="0" value="10.2.72.115" /> <constructor-arg index="1" value="7005" /> </bean> </set> </constructor-arg> <constructor-arg index="1" value="5000" /> <constructor-arg index="2" value="5000" /> <constructor-arg index="3" value="2" /> <constructor-arg index="4" value="root" /> <constructor-arg index="5" ref="poolConfig" /> </bean>

這裡是測試程式碼

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring-cache.xml"})
public class RedisTest {
    @Autowired
    JedisCluster jedisCluster;

    @Test
    public void testJedisCluster() {
        System.out.println(jedisCluster.set("test", "test"));
        System.out.println(jedisCluster.get("test"));
        System.out.println(jedisCluster.get("name"));
        System.out.println(jedisCluster.get("age"));
        System.out.println(jedisCluster.get("haha"));
        System.out.println(jedisCluster.get("haha"));
    }
}

注意:我的jedis版本是2.9.0的,spring是4.2.5.RELEASE