redis連接池(JedisPool)資源歸還及timeout詳解


 

一、連接池資源類詳解都在注釋上

 

package redis.v1.client.server; import org.apache.commons.pool2.impl.GenericObjectPoolConfig; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolClient { private static JedisPool pool = null; /** * * 方法描述 構建redis連接池 * * @return * * @author yaomy * @date 2018年1月11日 下午4:53:07 */ static { if(pool == null) { JedisPoolConfig config = new JedisPoolConfig(); //控制一個pool可分配多少個jedis實例,通過pool.getResource()來獲取; //如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis實例,則此時pool的狀態為exhausted(耗盡)。 config.setMaxTotal(50); //控制一個pool最多有多少個狀態為idle(空閑的)的jedis實例。 config.setMaxIdle(5); //表示當borrow(引入)一個jedis實例時,最大的等待時間,如果超過等待時間,則直接拋出JedisConnectionException;單位毫秒 //小於零:阻塞不確定的時間, 默認-1 config.setMaxWaitMillis(1000*100); //在borrow(引入)一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的; config.setTestOnBorrow(true); //return 一個jedis實例給pool時,是否檢查連接可用性(ping()) config.setTestOnReturn(true); //connectionTimeout 連接超時(默認2000ms) //soTimeout 響應超時(默認2000ms) pool = new JedisPool(config, "127.0.0.1", 6379, 2000, "619868"); } } /** * * 方法描述 獲取Jedis實例 * * @return * * @author yaomy * @date 2018年1月11日 下午4:56:58 */ public static Jedis getJedis() { return pool.getResource(); } /** * * 方法描述 釋放jedis連接資源 * * @param jedis * * @author yaomy * @date 2018年1月12日 上午10:36:07 */ public static void returnResource(Jedis jedis) { if(jedis != null) { jedis.close(); } } }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM