1. 程式人生 > >4、Redis連線池的構建與測試

4、Redis連線池的構建與測試

首先我們在我們的專案中新建一個 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服務
image.png

然後Xshell啟動我們的連線客戶端:
image.png
發現原本存在一些,我先把裡面的刪掉,執行:flushall
image.png
好,發現所以key都被我們清空了,接下來就要執行我們上面編寫的程式碼,直接執行main函式即可~
OK,執行完畢,來看看我們的redis裡面有沒有我們剛才加的資料吧~

咦,發現數據已經加進去了,那麼測試也就成功啦~
image.png