1. 程式人生 > >Redis連線池

Redis連線池

當需要很多連線的時候,一般都是通過使用連線池獲取連線,首先我們先自定義一個簡單(沒考慮高併發等複雜情況)的連線池,及進行相應設定

package com.redis.test;


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
 * 
 * <p>title: JedisPoolUtil</p>
 * <p>Description: 池化</p>
 * @param  
 * @author 
 * @return 
 * 2018年6月10日下午1:00:44
 * @version
 */
public class JedisPoolUtil {

private static volatile JedisPool jedisPool = null;

private JedisPoolUtil() {}

public static JedisPool getJedisInstance() {
if(null == jedisPool) {
synchronized (JedisPoolUtil.class) {
if(null == jedisPool) {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxActive(1000); //最大連線數
poolConfig.setMaxIdle(32);
//最大空閒數
poolConfig.setMaxWait(100*1000); //最大等待時間
poolConfig.setTestOnBorrow(true);//是否檢查連線可用性


jedisPool = new JedisPool(poolConfig, "192.xxx.x.x", 6379);
}
}
}

return jedisPool;
}

        //釋放連線
public static void release(JedisPool jedisPool, Jedis jedis) {
if(null != jedis) {
jedisPool.returnResourceObject(jedis);
}
}

}

然後通過連線池獲得連線:

package com.redis.test;


import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;


public class TestPool {
public static void main(String[] args) {
JedisPool jedisPool = JedisPoolUtil.getJedisInstance();
Jedis jedis = null;

try {
jedis = jedisPool.getResource();

jedis.set("aa", "bb");
} catch (Exception e) {
e.printStackTrace();
}finally {
JedisPoolUtil.release(jedisPool, jedis);
}
}

}

在linux下獲取值