4、Redis連線池的構建與測試
阿新 • • 發佈:2018-11-01
首先我們在我們的專案中新建一個 RedisPool
類
程式碼如下:
package com.mmall.common;
import com.mmall.util.PropertiesUtil;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* @author Chakid
* @since 2018-10-30 20:15
*/
public class RedisPool {
private static JedisPool pool; //jedis連線池
//redis所在的IP
private static String redisIp=PropertiesUtil.getProperty("redis.ip");
//redis開放的埠
private static Integer redisPort =Integer.parseInt(PropertiesUtil.getProperty("redis.port"));
//jedis最大連線數
private static Integer maxTotal= Integer.parseInt (PropertiesUtil.getProperty("redis.max.total","20"));
//最大空閒連線數
private static Integer maxIdle= Integer.parseInt(PropertiesUtil.getProperty("redis.max.idle","10"));
//最小空閒連線數
private static Integer minIdle= Integer.parseInt(PropertiesUtil.getProperty("redis.min.idle","2"));
//從jedis連線池獲取連線時,校驗並返回可用的連線
private static boolean testBorrow= Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.borrow","true"));
//把連線放回jedis連線池時,校驗並返回可用的連線
private static boolean testReturn= Boolean.parseBoolean(PropertiesUtil.getProperty("redis.test.return","true"));
//初始化連線池
private static void initPool(){
JedisPoolConfig config = new JedisPoolConfig();
//給config set相關值
config.setMaxTotal(maxTotal);
config.setMaxIdle(maxIdle);
config.setMinIdle(minIdle);
config.setTestOnBorrow(testBorrow);
config.setTestOnReturn(testReturn);
//連線耗盡時,是否阻塞,false會丟擲異常,true直到阻塞超時,預設為true
config.setBlockWhenExhausted(true);
pool = new JedisPool(config,redisIp,redisPort,1000*2);
}
//例項化連線池
static {
initPool();
}
//從連線池中獲取一個連線物件
public static Jedis getJedis(){
return pool.getResource();
}
//如果是一個損壞連線就放在BrokenResource
public static void returnBrokenResource(Jedis jedis){
pool.returnBrokenResource(jedis);
}
//將jedis放回連線池
public static void returnResource(Jedis jedis){
pool.returnResource(jedis);
}
//用main測試我們的連線
public static void main(String[] args) {
Jedis jedis = pool.getResource();
jedis.set("chakidkey","chakidvalue");
returnResource(jedis);
pool.destroy();
System.out.println("program is end~");
}
}
然後由於我是把配置資訊單獨配置多出來,如果只是單獨測試 Jedis
的連線的話,把我下面的對應引數填到上面即可~
#start redis config
#redis所在伺服器IP
redis.ip=119.29.xx.xxx
#redis的埠
redis.port=6379
#最大連線數
redis.max.total=20
#最大空閒連線數
redis.max.idle=10
#最小空閒連線數
redis.min.idle=2
#從jedis連線池獲取連線時,校驗並返回可用的連線
redis.test.borrow=true
#把連線放回jedis連線池時,校驗並返回可用的連線 return設定為false的時候,在併發量高的時候可以提高我們的併發效率
redis.test.return=false
#end redis config
相關程式碼的講解都在註釋中啦~
測試程式碼寫好之後,接下來就是測試我們的連線了:
用Xshell連線我們的伺服器,開啟Redis服務
然後Xshell啟動我們的連線客戶端:
發現原本存在一些,我先把裡面的刪掉,執行:flushall
好,發現所以key都被我們清空了,接下來就要執行我們上面編寫的程式碼,直接執行main
函式即可~
OK,執行完畢,來看看我們的redis裡面有沒有我們剛才加的資料吧~
咦,發現數據已經加進去了,那麼測試也就成功啦~