Redis連接池配置及初始化實(shí)現(xiàn)
加入db選擇后的redis連接池配置代碼
public class RedisPoolConfigure { //Redis服務(wù)器IP private String ADDR ; //Redis的端口號 private int PORT ; //可用連接實(shí)例的最大數(shù)目 private int MAX_ACTIVE ; //pool中的idle jedis實(shí)例數(shù) private int MAX_IDLE ; //等待可用連接的最大時(shí)間,單位毫秒 private int MAX_WAIT ; //超時(shí)時(shí)間,單位毫秒 private int TIME_OUT ; //設(shè)置的逐出策略類名, 默認(rèn)DefaultEvictionPolicy(當(dāng)連接超過最大空閑時(shí)間,或連接數(shù)超過最大空閑連接數(shù)) private String EVICTION_POLICY_CLASS_NAME ; //連接耗盡時(shí)是否阻塞, false報(bào)異常,ture阻塞直到超時(shí) private boolean BLOCK_WHEN_EXHAUSTED; //是否啟用pool的jmx管理功能, 默認(rèn)true private boolean JMX_ENABLED; //在borrow一個(gè)jedis實(shí)例時(shí),是否提前進(jìn)行validate操作;如果為true,則得到的jedis實(shí)例均是可用的; private boolean TEST_ON_BORROW ; //服務(wù)器密碼 private String REDIS_PASS; //redis選擇數(shù)據(jù)庫DB private int REDIS_DB; private String LUASHA; private Map<String, String> configure = null; /** * 根據(jù)配置文件,將RedisPool連接配置初始化 */ public RedisPoolConfigure(){ try { configure = new ConfigureReader().readProperties("redis.properties"); } catch (IOException e) { e.printStackTrace(); } this.ADDR = configure.get("REDIS.ADDR"); this.LUASHA = configure.get("REDIS.LUA_HASH"); this.EVICTION_POLICY_CLASS_NAME = configure.get("REDIS.EVICTION_POLICY_CLASS_NAME"); this.BLOCK_WHEN_EXHAUSTED = Boolean.parseBoolean(configure.get("REDIS.BLOCK_WHEN_EXHAUSTED")); this.JMX_ENABLED = Boolean.parseBoolean(configure.get("REDIS.JMX_ENABLED")); this.TEST_ON_BORROW = Boolean.parseBoolean(configure.get("REDIS.TEST_ON_BORROW")); this.REDIS_PASS=configure.get("REDIS.PASS"); if(typeCheck()){ this.PORT = new Integer(configure.get("REDIS.PORT")); this.MAX_ACTIVE = new Integer(configure.get("REDIS.MAX_ACTIVE")); this.MAX_IDLE = new Integer(configure.get("REDIS.MAX_IDLE")); this.MAX_WAIT = new Integer(configure.get("REDIS.MAX_WAIT")); this.REDIS_DB=new Integer(configure.get("REDIS.DB")); }else{ System.out.println("error"); } } /** * 輔助工具,檢查map中數(shù)據(jù)的類型 * @return */ private boolean typeCheck() { if (isNumeric(configure.get("REDIS.PORT")) && isNumeric(configure.get("REDIS.MAX_ACTIVE")) && isNumeric(configure.get("REDIS.MAX_IDLE")) && isNumeric(configure.get("REDIS.MAX_WAIT")) && isNumeric(configure.get("REDIS.DB"))) { return true; } return false; } public String getADDR() { return ADDR; } public int getPORT() { return PORT; } public int getMAX_ACTIVE() { return MAX_ACTIVE; } public int getMAX_IDLE() { return MAX_IDLE; } public int getMAX_WAIT() { return MAX_WAIT; } public int getTIME_OUT() { return TIME_OUT; } public boolean isTEST_ON_BORROW() { return TEST_ON_BORROW; } public String getEVICTION_POLICY_CLASS_NAME() { return EVICTION_POLICY_CLASS_NAME; } public boolean isBLOCK_WHEN_EXHAUSTED() { return BLOCK_WHEN_EXHAUSTED; } public boolean isJMX_ENABLED() { return JMX_ENABLED; } /** * 判斷傳入的數(shù)據(jù)是否為純數(shù)字構(gòu)成 * @param str * @return */ public boolean isNumeric(String str) { if(str==null || "".equals(str)){ return false; } for (int i = 0; i < str.length(); i++) { if (!Character.isDigit(str.charAt(i))) { return false; } } return true; } public String getLUASHA() { return LUASHA; } public void setLUASHA(String lUASHA) { LUASHA = lUASHA; } public String getREDIS_PASS() { return REDIS_PASS; } public void setREDIS_PASS(String rEDIS_PASS) { REDIS_PASS = rEDIS_PASS; } public int getREDIS_DB() { return REDIS_DB; } public void setREDIS_DB(int rEDIS_DB) { REDIS_DB = rEDIS_DB; } }
redis連接池初始化、獲取Jedis實(shí)例和釋放Jedis實(shí)例
/** * jedis的連接池,返回未封裝的jedis對象 * 一般只有在RedisCache類提供的操作粒度不足使用時(shí)才使用此類提供的原生jedis方法 * @author Hector * */ public class RedisPool { private static JedisPool jedisPool = null; /** * 初始化Redis連接池 */ static { try { RedisPoolConfigure configure = new RedisPoolConfigure(); JedisPoolConfig config = new JedisPoolConfig(); config.setBlockWhenExhausted(configure.isBLOCK_WHEN_EXHAUSTED()); config.setEvictionPolicyClassName(configure.getEVICTION_POLICY_CLASS_NAME()); config.setJmxEnabled(configure.isJMX_ENABLED()); config.setMaxIdle(configure.getMAX_IDLE()); config.setMaxTotal(configure.getMAX_ACTIVE()); config.setMaxWaitMillis(configure.getMAX_WAIT()); config.setTestOnBorrow(configure.isTEST_ON_BORROW()); jedisPool = new JedisPool(config, configure.getADDR(), configure.getPORT(), configure.getTIME_OUT(),configure.getREDIS_PASS(),configure.getREDIS_DB()); } catch (Exception e) { e.printStackTrace(); } } /** * 獲取Jedis實(shí)例 * @return */ public synchronized static Jedis getJedis() { Jedis resource=null; try { if (jedisPool != null) { resource = jedisPool.getResource(); return resource; } else { return null; } } catch (Exception e) { e.printStackTrace(); return null; } } /** * 釋放jedis資源 * @param jedis */ public static void close(final Jedis jedis) { if (jedis != null) { jedis.close(); } } public static JedisPool getJedisPool() { return jedisPool; } }
到此這篇關(guān)于Redis連接池配置及初始化實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Redis連接池配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redisson?框架中的分布式鎖實(shí)現(xiàn)方法
這篇文章主要介紹了Redisson?框架中的分布式鎖,實(shí)現(xiàn)分布式鎖通常有三種方式:數(shù)據(jù)庫、Redis 和 Zookeeper,我們比較常用的是通過 Redis 和 Zookeeper 實(shí)現(xiàn)分布式鎖,需要的朋友可以參考下2024-03-03Redis常見數(shù)據(jù)類型List列表使用詳解
Redis的List是一種有序的字符串集合,支持兩端高效插入和刪除,適用于隊(duì)列和棧,這篇文章主要介紹了Redis常見數(shù)據(jù)類型List列表使用的相關(guān)資料,需要的朋友可以參考下2024-12-12redis 限制內(nèi)存使用大小的實(shí)現(xiàn)
這篇文章主要介紹了redis 限制內(nèi)存使用大小的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Redis?緩存淘汰策略和事務(wù)實(shí)現(xiàn)樂觀鎖詳情
這篇文章主要介紹了Redis緩存淘汰策略和事務(wù)實(shí)現(xiàn)樂觀鎖詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-07-07Redis集群利用Redisson實(shí)現(xiàn)分布式鎖方式
這篇文章主要介紹了Redis集群利用Redisson實(shí)現(xiàn)分布式鎖方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-05-05redis集群搭建_動力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了redis集群搭建,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08