给你个小 demo,在实际的项目中我也只是使用过一次,还是实习生的时候。
网上可参考的demo比较多,注意版本,高版本的jedis api和低版本的有差别,主要是config那块。
这个代码是使用低版本的实现的。基本都有注释。
/**
* Created by Nicholas on 2015/10/19.
*/
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class Test {
private static JedisPool pool = null;
public static JedisPool getPool() {
if (pool == null) {
JedisPoolConfig config = new JedisPoolConfig();
/**
* 控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取
* 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,
* 则此时pool的状态为exhausted(耗尽)
*/
config.setMaxActive(500);
/**
* 控制一个pool最多有多少个状态为idle(空闲的)的jedis实例
*/
config.setMaxIdle(5);
/**
* 表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,
* 则直接抛出JedisConnectionException
*/
config.setMaxWait(1000 * 100);
/**
* 在borrow一个jedis实例时,是否提前进行validate操作;如果为true,
* 则得到的jedis实例均是可用的
*/
config.setTestOnBorrow(true);
pool = new JedisPool(config, "127.0.0.1", 8888);
}
return pool;
}
/**
* 返还到连接池
*
* @param pool
* @param redis
*/
public static void returnResource(JedisPool pool, Jedis redis) {
if (redis != null) {
pool.returnResource(redis);
}
}
/**
* @brief 获取数据
* @param key
* @return
*/
public static String get(String key){
String value = null;
JedisPool pool = null;
Jedis jedis = null;
try {
pool = getPool();
jedis = pool.getResource();
value = jedis.get(key);
} catch (Exception e) {
/**
* 释放redis对象
*/
pool.returnBrokenResource(jedis);
e.printStackTrace();
} finally {
/**
* 返还到连接池
*/
returnResource(pool, jedis);
}
return value;
}
}