redis 哨兵连接池(JedisSentinelPool)——相关参数配置到spring中

applicationContext-redis.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans.xsd ">
    
	<!-- jedis pool配置 -->
	<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
		<property name="maxTotal" value="10000" />
		<property name="maxIdle" value="100" />
		<property name="maxWaitMillis" value="1000" />
		<!-- 向调用者输出“链接”资源时,是否检测是有有效,如果无效则从连接池中移除,并尝试获取继续获取。设为true,一个挂都不能用 -->
		<property name="testOnBorrow" value="true" />
		<!-- 向连接池“归还”链接时,是否检测“链接”对象的有效性。 -->
		<property name="testOnReturn" value="true" />
	</bean>
	
	<bean id="jedisPool" class="redis.clients.jedis.JedisSentinelPool">
		<constructor-arg index="0" value="mymaster" />
		<constructor-arg index="1">
			<set>
				<value>172.19.59.50:26379</value><!--配置了一个哨兵 -->
			</set>
		</constructor-arg>
		<constructor-arg index="2" ref="jedisPoolConfig" />
		<constructor-arg index="3" value="30000" />
		<constructor-arg index="4">
			<null />
		</constructor-arg>
		<constructor-arg index="5" value="0" />
	</bean>
</beans>

测试代码:

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisSentinelPool;
import redis.clients.jedis.exceptions.JedisException;

public class TestRedisPool {

	public static void main(String[] args) {
		ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext-redis.xml");
		JedisSentinelPool pool = (JedisSentinelPool) ac.getBean("jedisPool");
		Jedis jedis = null;
		try {
			jedis = pool.getResource();
			jedis.set("foo", "test");
			String redisStr = jedis.get("foo");
			System.out.println(redisStr);
		} catch (JedisException je) {
			throw je;
		} finally {
			if (jedis != null)
				pool.returnResource(jedis);
		}
	}
}

输出结果:

八月 22, 2017 11:19:55 上午 redis.clients.jedis.JedisSentinelPool initSentinels
信息: Trying to find master from available Sentinels...
八月 22, 2017 11:19:55 上午 redis.clients.jedis.JedisSentinelPool initSentinels
信息: Redis master running at 172.19.59.50:6381, starting Sentinel listeners...
八月 22, 2017 11:19:55 上午 redis.clients.jedis.JedisSentinelPool initPool
信息: Created JedisPool to master at 172.19.59.50:6381
11:19:55.782 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Eagerly caching bean 'jedisPool' to allow for resolving potential circular references
11:19:55.782 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Finished creating instance of bean 'jedisPool'
11:19:55.783 [main] DEBUG org.springframework.context.support.ClassPathXmlApplicationContext - Unable to locate LifecycleProcessor with name 'lifecycleProcessor': using default [org.springframework.context.support.DefaultLifecycleProcessor@6054cd1b]
11:19:55.783 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'lifecycleProcessor'
11:19:55.784 [main] DEBUG org.springframework.beans.factory.support.DefaultListableBeanFactory - Returning cached instance of singleton bean 'jedisPool'
test

猜你喜欢

转载自guwq2014.iteye.com/blog/2390635
今日推荐