一、jedis池的介紹
相信大家都用過執行緒池或者是jdbc的連線池,使用池可以減少系統在使用所需物件時建立物件的開銷,從而提高系統性能和效率。jedis池也是如此,那麼我們該如何使用jedis池呢?
二、jedis池的使用
1.所需jar包:
commons-pool.jar、jedis-2.1.0.jar
2.編寫Redis配置檔案(redis.properties):
本例中程式碼如下:
#*****************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例項物件還回遲中
}
}