reids叢集學習(二)使用jedis實現redis叢集客戶端
阿新 • • 發佈:2018-12-25
上一節我記錄瞭如何搭建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