redis串連池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar

來源:互聯網
上載者:User

標籤:ini   active   ctp   conf   操作   串連   source   trace   預設值   

java使用Redis串連池 

jar包為 jedis-2.9.0.jar+commons-pool2-2.4.2.jar

  1 package com.test;  2   3 import redis.clients.jedis.Jedis;  4 import redis.clients.jedis.JedisPool;  5 import redis.clients.jedis.JedisPoolConfig;  6   7 public  class RedisUtil {  8     //Redis伺服器IP  9     private static String ADDR = "192.168.0.41"; 10      11     //Redis的連接埠號碼 12     private static int PORT = 6379; 13      14     //訪問密碼 15     private static String AUTH = "admin"; 16      17     //可用串連執行個體的最大數目,預設值為8; 18     //如果賦值為-1,則表示不限制;如果pool已經分配了maxActive個jedis執行個體,則此時pool的狀態為exhausted(耗盡)。 19     private static int MAX_TOTAL = 8; 20      21     //最小空閑串連數, 預設0 22     private static int MIN_IDLE=0; 23      24     //控制一個pool最多有多少個狀態為idle(閒置)的jedis執行個體,預設值也是8。 25     //最大空閑串連數, 預設8個 26     private static int MAX_IDLE = 8; 27      28     //擷取串連時的最大等待毫秒數(如果設定為阻塞時BlockWhenExhausted),如果逾時就拋異常, 小於零:阻塞不確定的時間,  預設-1 29     //等待可用串連的最大時間,單位毫秒,預設值為-1,表示永不逾時。如果超過等待時間,則直接拋出JedisConnectionException; 30     private static int MAX_WAIT = -1; 31      32     private static int TIMEOUT = 10000; 33      34     //串連耗盡時是否阻塞, false報異常,ture阻塞直到逾時, 預設true 35     private static boolean BLOCK_WHEN_EXHAUSTED = false; 36      37     //設定的逐出策略類名, 預設DefaultEvictionPolicy(當串連超過最大空閑時間,或串連數超過最大空閑串連數) 38     private static String EVICTION_POLICY_CLASSNAME="org.apache.commons.pool2.impl.DefaultEvictionPolicy"; 39      40     //是否啟用pool的jmx管理功能, 預設true 41     private static boolean JMX_ENABLED=true; 42     43     //MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 預設為"pool", JMX不熟,具體不知道是幹啥的...預設就好. 44     private static String JMX_NAME_PREFIX="pool"; 45      46     //是否啟用後進先出, 預設true 47     private static boolean LIFO=true; 48      49     //逐出串連的最小空閑時間 預設1800000毫秒(30分鐘) 50     private static long MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L; 51      52     //對象空閑多久後逐出, 當空閑時間>該值 且 空閑串連>最大空閑數 時直接逐出,不再根據MinEvictableIdleTimeMillis判斷  (預設逐出策略)    53     private static long SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS=1800000L; 54      55     //每次逐出檢查時 逐出的最大數目 如果為負數就是 : 1/abs(n), 預設3 56     private static int NUM_TESTS_PER_EVICYION_RUN=3; 57      58     //在borrow一個jedis執行個體時,是否提前進行validate操作;如果為true,則得到的jedis執行個體均是可用的; 59     //在擷取串連的時候檢查有效性, 預設false 60     private static boolean TEST_ON_BORROW = false; 61      62     //在空閑時檢查有效性, 預設false 63     private static boolean TEST_WHILEIDLE=false; 64      65     //逐出掃描的時間間隔(毫秒) 如果為負數,則不運行逐出線程, 預設-1 66     private static long TIME_BERWEEN_EVICTION_RUNS_MILLIS=-1; 67      68     private static JedisPool jedisPool = null; 69      70     /** 71      * 初始化Redis串連池 72      */ 73     static { 74         try { 75             JedisPoolConfig config = new JedisPoolConfig(); 76             config.setBlockWhenExhausted(BLOCK_WHEN_EXHAUSTED); 77             config.setEvictionPolicyClassName(EVICTION_POLICY_CLASSNAME);  78             config.setJmxEnabled(JMX_ENABLED); 79             config.setJmxNamePrefix(JMX_NAME_PREFIX); 80             config.setLifo(LIFO); 81             config.setMaxIdle(MAX_IDLE); 82             config.setMaxTotal(MAX_TOTAL); 83             config.setMaxWaitMillis(MAX_WAIT); 84             config.setMinEvictableIdleTimeMillis(MIN_EVICTABLE_IDLE_TIME_MILLIS); 85             config.setMinIdle(MIN_IDLE); 86             config.setNumTestsPerEvictionRun(NUM_TESTS_PER_EVICYION_RUN); 87             config.setSoftMinEvictableIdleTimeMillis(SOFT_MIN_EVICTABLE_IDLE_TIME_MILLIS); 88             config.setTestOnBorrow(TEST_ON_BORROW); 89             config.setTestWhileIdle(TEST_WHILEIDLE); 90             config.setTimeBetweenEvictionRunsMillis(TIME_BERWEEN_EVICTION_RUNS_MILLIS); 91              92             jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT, AUTH); 93         } catch (Exception e) { 94             e.printStackTrace(); 95         } 96     } 97      98     /** 99      * 擷取Jedis執行個體100      * @return101      */102     public synchronized static Jedis getJedis() {103         try {104             if (jedisPool != null) {105                 Jedis resource = jedisPool.getResource();106                 return resource;107             } else {108                 return null;109             }110         } catch (Exception e) {111             e.printStackTrace();112             return null;113         }114     }115 116     /**117      * 釋放jedis資源118      * @param jedis119      */120     public static void close(final Jedis jedis) {121         if (jedis != null) {122             jedis.close();123         }124     }125 }

 

redis串連池 jedis-2.9.0.jar+commons-pool2-2.4.2.jar

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.