一、jedis池的介紹

相信大家都用過執行緒池或者是jdbc的連線池,使用池可以減少系統在使用所需物件時建立物件的開銷,從而提高系統性能和效率。jedis池也是如此,那麼我們該如何使用jedis池呢?

二、jedis池的使用

1.所需jar包:

commons-pool.jar、jedis-2.1.0.jar
2.編寫Redis配置檔案(redis.properties):

本例中程式碼如下:

#*****************jedis連線引數設定*********************#

#redis伺服器ip #

redis.ip=192.168.8.167

#redis伺服器埠號#

redis.port=6379

#************************jedis池引數設定*******************#

#jedis的最大分配物件#

jedis.pool.maxActive=3000

#jedis最大儲存idel狀態物件數 #

jedis.pool.maxIdle=1000

#jedis池沒有物件返回時,最大等待時間 #

jedis.pool.maxWait=1500

#jedis呼叫borrowObject方法時,是否進行有效檢查#

jedis.pool.testOnBorrow=true

#jedis呼叫returnObject方法時,是否進行有效檢查 #

jedis.pool.testOnReturn=true

3.編寫Java實現程式碼:

package com.zhongying.customer.utils;

import java.io.IOException;

import java.util.Properties;

import redis.clients.jedis.Jedis;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

public class MyJedisPool {

private static JedisPool pool;

//靜態程式碼初始化池配置

static {

try{

Properties props = new Properties();

props.load(MyJedisPool.class.getClassLoader().getResourceAsStream("redis.properties"));

//建立jedis池配置例項

JedisPoolConfig config = new JedisPoolConfig();

//設定池配置項值

config.setMaxActive(Integer.valueOf(props.getProperty("jedis.pool.maxActive")));

config.setMaxIdle(Integer.valueOf(props.getProperty("jedis.pool.maxIdle")));

config.setMaxWait(Long.valueOf(props.getProperty("jedis.pool.maxWait")));

config.setTestOnBorrow(Boolean.valueOf(props.getProperty("jedis.pool.testOnBorrow")));

config.setTestOnReturn(Boolean.valueOf(props.getProperty("jedis.pool.testOnReturn")));

//根據配置例項化jedis池

pool = new JedisPool(config, props.getProperty("redis.ip"), Integer.valueOf(props.getProperty("redis.port")));

}catch (IOException e) {

e.printStackTrace();

}

}

/**獲得jedis物件*/

public static Jedis getJedisObject(){

return pool.getResource();

}

/**歸還jedis物件*/

public static void recycleJedisOjbect(Jedis jedis){

pool.returnResource(jedis);

}

/**

* 測試jedis池方法

*/

public static void main(String[] args) {

Jedis jedis = getJedisObject();//獲得jedis例項

//獲取jedis例項後可以對redis服務進行一系列的操作

jedis.set("name", "zhuxun");

System.out.println(jedis.get("name"));

jedis.del("name");

System.out.println(jedis.exists("name"));

recycleJedisOjbect(jedis); //將 獲取的jedis例項物件還回遲中

}

}