相信大家都用过线程池或者是jdbc的连接池,使用池可以减少系统在使用所需对象时创建对象的开销,从而提高系统性能和效率。jedis池也是如此,那么我们该如何使用jedis池呢?
二、jedis池的使用
1.所需jar包:commons-pool.jar、jedis-2.1.0.jar
本例中代码如下:
#*****************jedis连接参数设置*********************#
#redis服务器ip #
redis.ip=192.168.8.167
#redis服务器端口号#
redis.port=6379
#************************jedis池参数设置*******************#
#jedis的最大分配对象#
jedis.pool.maxActive=3000
#jedis最大保存idel状态对象数 #
jedis.pool.maxIdle=1000
#jedis池没有对象返回时,最大等待时间 #
jedis.pool.maxWait=1500
#jedis调用borrowObject方法时,是否进行有效检查#
jedis.pool.testOnBorrow=true
#jedis调用returnObject方法时,是否进行有效检查 #
jedis.pool.testOnReturn=true
3.编写Java实现代码:
package com.zhongying.customer.utils;
import java.io.IOException;
import java.util.Properties;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class MyJedisPool {
private static JedisPool pool;
//静态代码初始化池配置
static {
try{
Properties props = new Properties();
props.load(MyJedisPool.class.getClassLoader().getResourceAsStream("redis.properties"));
//创建jedis池配置实例
JedisPoolConfig config = new JedisPoolConfig();
//设置池配置项值
config.setMaxActive(Integer.valueOf(props.getProperty("jedis.pool.maxActive")));
config.setMaxIdle(Integer.valueOf(props.getProperty("jedis.pool.maxIdle")));
config.setMaxWait(Long.valueOf(props.getProperty("jedis.pool.maxWait")));
config.setTestOnBorrow(Boolean.valueOf(props.getProperty("jedis.pool.testOnBorrow")));
config.setTestOnReturn(Boolean.valueOf(props.getProperty("jedis.pool.testOnReturn")));
//根据配置实例化jedis池
pool = new JedisPool(config, props.getProperty("redis.ip"), Integer.valueOf(props.getProperty("redis.port")));
}catch (IOException e) {
e.printStackTrace();
}
}
/**获得jedis对象*/
public static Jedis getJedisObject(){
return pool.getResource();
}
/**归还jedis对象*/
public static void recycleJedisOjbect(Jedis jedis){
pool.returnResource(jedis);
}
/**
* 测试jedis池方法
*/
public static void main(String[] args) {
Jedis jedis = getJedisObject();//获得jedis实例
//获取jedis实例后可以对redis服务进行一系列的操作
jedis.set("name", "zhuxun");
System.out.println(jedis.get("name"));
jedis.del("name");
System.out.println(jedis.exists("name"));
recycleJedisOjbect(jedis); //将 获取的jedis实例对象还回迟中
}
}
4.测试执行结果如下:
zhuxun
false
转自网络,原作者已佚