redis連接池JedisPool的使用

測試類:

public class TestRedis {

/** * @創(chuàng)建時(shí)間:2017-10-26 * @創(chuàng)建者:meter * @返回值類型:void * @描述:測試redis連接池

?*/

private static void testRedisPool(){Jedis redis=RedisPoolService.getJedis();Setkeys=redis.keys("*");

for(String key:keys){

System.out.println(key+"='"+redis.get(key)+"'");

}

System.out.println(redis.dbSize());

redis.close();

}

public static void main(String[] args) {

//testReids();

testRedisPool();

}

}


服務(wù)類:

/**

* @創(chuàng)建日期:2017-10-26

* @包路徑:org.meter.redis.pool.RedisPoolService.java

* @創(chuàng)建者:meter

* @描述:

* @版權(quán):copyright@2017 by meter !

*/

package org.meter.redis.pool;

import java.util.Properties;

import java.util.ResourceBundle;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

/**

* @創(chuàng)建日期:2017-10-26

* @創(chuàng)建者:meter

* @描述:

* @版權(quán):copyright@2017

*/

public class RedisPoolService {

private? Logger logger = LoggerFactory.getLogger(RedisPoolService.class);

// Redis服務(wù)器IP

private? String HOST = "127.0.0.1";

// Redis的端口號(hào)

private? int PORT = 6379;

// 可用連接實(shí)例的最大數(shù)目揪胃,默認(rèn)值為8;

// 如果賦值為-1沽翔,則表示不限制蛛倦;如果pool已經(jīng)分配了maxActive個(gè)jedis實(shí)例,則此時(shí)pool的狀態(tài)為exhausted(耗盡)锰瘸。

private? int MAX_ACTIVE = 1024;

// 控制一個(gè)pool最多有多少個(gè)狀態(tài)為idle(空閑的)的jedis實(shí)例粹淋,默認(rèn)值也是8监透。

private? int MAX_IDLE = 200;

// 等待可用連接的最大時(shí)間蛋辈,單位毫秒属拾,默認(rèn)值為-1,表示永不超時(shí)冷溶。如果超過等待時(shí)間渐白,則直接拋出JedisConnectionException;

private? int MAX_WAIT = 10000;

// 在borrow一個(gè)jedis實(shí)例時(shí)挂洛,是否提前進(jìn)行validate操作礼预;如果為true眠砾,則得到的jedis實(shí)例均是可用的虏劲;

private? boolean TEST_ON_BORROW = false;

private? String PASSWORD=null;

private? Boolean isAuth=false;

private? JedisPool jedisPool = null;

private static RedisPoolService instance;

/**

* 構(gòu)造函數(shù)

*/

private RedisPoolService(){

init();

}

static{

instance=new RedisPoolService();

}

/**

* @創(chuàng)建時(shí)間:2017-10-26

* @創(chuàng)建者:meter

* @返回值類型:void

* @描述:初始化Redis連接池

*/

private? void init() {

try {

initParams();

JedisPoolConfig config = new JedisPoolConfig();

config.setMaxTotal(MAX_ACTIVE);

config.setMaxIdle(MAX_IDLE);

config.setMaxWaitMillis(MAX_WAIT);

config.setTestOnBorrow(TEST_ON_BORROW);

jedisPool = new JedisPool(config, HOST, PORT);

} catch (Exception e) {

e.printStackTrace();

}

}

/**

* @創(chuàng)建時(shí)間:2017-10-26

* @創(chuàng)建者:meter

* @返回值類型:void

* @描述:讀取配置文件

*/

private? void initParams(){

try{

Properties map=new Properties();

map.load(RedisPoolService.class.getClassLoader().getResourceAsStream("redis.properties"));

String tmpHOST=map.getProperty("redis.host");

if(tmpHOST != null && !"".equals(tmpHOST)){

HOST=tmpHOST.trim();

}

String tmpPASSWORD=map.getProperty("redis.password");

if(tmpPASSWORD != null && !"".equals(tmpPASSWORD)){

PASSWORD=tmpPASSWORD.trim();

}

String tmpPORT=map.getProperty("redis.port").trim();

if(tmpPORT != null && !"".equals(tmpPORT)){

PORT=Integer.parseInt(tmpPORT.trim());

}

String tmpIsAuth=map.getProperty("redis.isAuth");

if(tmpIsAuth != null && !"".equals(tmpIsAuth)){

isAuth=Boolean.parseBoolean(tmpIsAuth.trim());

}

String tmpMAX_ACTIVE=map.getProperty("redis.max_active");

if(tmpMAX_ACTIVE != null && !"".equals(tmpMAX_ACTIVE)){

MAX_ACTIVE=Integer.parseInt(tmpMAX_ACTIVE.trim());

}

String tmpMAX_IDLE=map.getProperty("redis.max_idle");

if(tmpMAX_IDLE != null && !"".equals(tmpMAX_IDLE)){

MAX_IDLE=Integer.parseInt(tmpMAX_IDLE.trim());

}

String tmpMAX_WAIT=map.getProperty("redis.max_wait");

if(tmpMAX_WAIT != null && !"".equals(tmpMAX_IDLE)){

MAX_WAIT=Integer.parseInt(tmpMAX_WAIT.trim());

}

String tmpTEST_ON_BORROW=map.getProperty("redis.test_on_borrow");

if(tmpTEST_ON_BORROW != null && !"".equals(tmpTEST_ON_BORROW)){

TEST_ON_BORROW=Boolean.parseBoolean(tmpTEST_ON_BORROW.trim());

}

}catch(Exception e){

logger.error("讀取redis配置參數(shù)失敗。",e);

}

}

/**

* @創(chuàng)建時(shí)間:2017-10-26

* @創(chuàng)建者:meter

* @返回值類型:Jedis

* @描述:獲取Jedis實(shí)例

* @return

*/

public static Jedis getJedis() {

try {

Jedis resource = instance.jedisPool.getResource();

if (instance.isAuth) {

resource.auth(instance.PASSWORD);

}

return resource;

} catch (Exception e) {

e.printStackTrace();

return null;

}

}

}

配置文件:

#redis連接池參數(shù)配置

#主機(jī)IP地址

redis.host=192.168.4.154

#服務(wù)器端口

redis.port=6380

#是否開啟密碼認(rèn)證

redis.isAuth=true

#如果開啟了認(rèn)證時(shí)的密碼

redis.password=admin1234

#可用連接實(shí)例的最大數(shù)目褒颈,默認(rèn)值為8柒巫。如果賦值為-1,則表示不限制谷丸;如果pool已經(jīng)分配了maxActive個(gè)jedis實(shí)例堡掏,則此時(shí)pool的狀態(tài)為exhausted(耗盡)。

redis.max_active=100

#控制一個(gè)pool最多有多少個(gè)狀態(tài)為idle(空閑的)的jedis實(shí)例刨疼,默認(rèn)值也是8泉唁。

redis.max_idle=10

#等待可用連接的最大時(shí)間鹅龄,單位毫秒,默認(rèn)值為-1亭畜,表示永不超時(shí)扮休。如果超過等待時(shí)間,則直接拋出JedisConnectionException

redis.max_wait=30000

#在borrow一個(gè)jedis實(shí)例時(shí)拴鸵,是否提前進(jìn)行validate操作玷坠;如果為true,則得到的jedis實(shí)例均是可用的劲藐。

redis.test_on_borrow=false

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末八堡,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子聘芜,更是在濱河造成了極大的恐慌兄渺,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件厉膀,死亡現(xiàn)場離奇詭異溶耘,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)服鹅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門凳兵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人企软,你說我怎么就攤上這事庐扫。” “怎么了仗哨?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵形庭,是天一觀的道長。 經(jīng)常有香客問我厌漂,道長萨醒,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任苇倡,我火速辦了婚禮富纸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘旨椒。我一直安慰自己晓褪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布综慎。 她就那樣靜靜地躺著涣仿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上好港,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天愉镰,我揣著相機(jī)與錄音,去河邊找鬼钧汹。 笑死岛杀,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的崭孤。 我是一名探鬼主播类嗤,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼辨宠!你這毒婦竟也來了遗锣?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤嗤形,失蹤者是張志新(化名)和其女友劉穎精偿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赋兵,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡笔咽,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了霹期。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叶组。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖历造,靈堂內(nèi)的尸體忽然破棺而出甩十,到底是詐尸還是另有隱情,我是刑警寧澤吭产,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布侣监,位于F島的核電站,受9級(jí)特大地震影響臣淤,放射性物質(zhì)發(fā)生泄漏橄霉。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一邑蒋、第九天 我趴在偏房一處隱蔽的房頂上張望姓蜂。 院中可真熱鬧,春花似錦寺董、人聲如沸覆糟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至造虏,卻和暖如春御吞,著一層夾襖步出監(jiān)牢的瞬間麦箍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工陶珠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留挟裂,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓揍诽,卻偏偏與公主長得像诀蓉,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子暑脆,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理渠啤,服務(wù)發(fā)現(xiàn),斷路器添吗,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • =========================================================...
    lavor閱讀 3,484評(píng)論 0 5
  • RedisRedis命令參考網(wǎng)址:http://doc.redisfans.com/ Redis 簡介Redis ...
    野柳閱讀 1,115評(píng)論 0 9
  • 1 Redis介紹1.1 什么是NoSql為了解決高并發(fā)碟联、高可擴(kuò)展妓美、高可用、大數(shù)據(jù)存儲(chǔ)問題而產(chǎn)生的數(shù)據(jù)庫解決方...
    克魯?shù)吕?/span>閱讀 5,268評(píng)論 0 36
  • 性在親密關(guān)系中到底是個(gè)什么位置,是個(gè)很困惑我的問題普监,至于為什么困惑估計(jì)像坊間流傳的那句話說的:“男人因性而愛委刘,女人...
    廖小夭閱讀 163評(píng)論 0 0