增加池的配置文件redis-pool.properties:

#最大能够保持idel状态的对象数
redis.pool.maxIdle=200
#当池内没有返回对象时,最大等待时间
redis.pool.maxWait=1000
#当调用borrow Object方法时,是否进行有效性检查
redis.pool.testOnBorrow=true
#当调用return Object方法时,是否进行有效性检查
redis.pool.testOnReturn=true
#IP
redis.ip=127.0.0.1
#Port
redis.port=6379

RedisApp.java

package com.yzl;

import java.util.ResourceBundle;

import org.apache.log4j.Logger;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; /**
* Reids之jedis的CRUD操作
*
* @author yangzhilong
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class RedisApp {
public Logger log = Logger.getLogger(this.getClass()); private static JedisPool pool;
private static ResourceBundle bundle; static{
bundle = ResourceBundle.getBundle("redis-pool");
if(bundle == null){
//假设直接抛出Exception咋必须进行处理,不然编译不会通过
throw new IllegalArgumentException("redis-pool.properties file is not found");
}
JedisPoolConfig config = new JedisPoolConfig();
//设置pool的一些参数,可选,详细配置项参见GenericObjectPoolConfig类
config.setMaxIdle(Integer.valueOf(bundle.getString("redis.pool.maxIdle")));
config.setMaxWaitMillis(Long.valueOf(bundle.getString("redis.pool.maxWait")));
config.setTestOnBorrow(Boolean.valueOf(bundle.getString("redis.pool.testOnBorrow")));
config.setTestOnReturn(Boolean.valueOf(bundle.getString("redis.pool.testOnReturn"))); //使用默认配置时可以使用如下方法初始化池
//pool = new JedisPool(bundle.getString("redis.ip"), Integer.valueOf(bundle.getString("redis.port")));
pool = new JedisPool(config, bundle.getString("redis.ip"), Integer.valueOf(bundle.getString("redis.port")));
} /**
*
* 功能描述: <br>
* CRUD操作之hello world
*
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public void crudFromRedisWidthSimple(){
Jedis jedis = new Jedis(bundle.getString("redis.ip"), Integer.valueOf(bundle.getString("redis.port")));
log.info("get connection with simple ");
crudMethod(jedis);
//关闭连接
jedis.close();
} /**
*
* 使用common-pool操作redis
*
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
public void crudFromRedisWidthPool(){
Jedis jedis = pool.getResource();
log.info("get connection from pool , obect is:" + jedis);
crudMethod(jedis);
//释放链接
pool.returnResourceObject(jedis);
} /**
*
* crud基本操作单元
*
* @param jedis
* @see [相关类/方法](可选)
* @since [产品/模块版本](可选)
*/
private void crudMethod(Jedis jedis){
log.info("insert value to redis~~~");
jedis.set("name", "hello jedis"); log.info("get value from redis, value:" + jedis.get("name")); log.info("delete key from redis~~~");
jedis.del("name"); log.info("get value from redis, value:" + jedis.get("name"));
}
}

RedisAppTest.java

 package com.yzl;

 import org.junit.Test;

 /**
* RedisApp的测试类
*
* @author yangzhilong
* @see [相关类/方法](可选)
* @since [产品/模块版本] (可选)
*/
public class RedisAppTest { @Test
public void crudFromRedisWidthSimpleTest(){
RedisApp app = new RedisApp();
app.crudFromRedisWidthSimple();
} @Test
public void crudFromRedisWidthPoolTest(){
RedisApp app = new RedisApp();
app.crudFromRedisWidthPool();
}
}

运行单元测试的结果:

 2015-08-12 16:03:24,449 [com.yzl.RedisApp]-[INFO] get connection from pool , obect is:redis.clients.jedis.Jedis@cee47f1
2015-08-12 16:03:24,449 [com.yzl.RedisApp]-[INFO] insert value to redis~~~
2015-08-12 16:03:24,449 [com.yzl.RedisApp]-[INFO] get value from redis, value:hello jedis
2015-08-12 16:03:24,449 [com.yzl.RedisApp]-[INFO] delete key from redis~~~
2015-08-12 16:03:24,449 [com.yzl.RedisApp]-[INFO] get value from redis, value:null

下一篇:5、redis之使用spring集成commons-pool

4、redis之使用commons-pool的更多相关文章

  1. Apache Commons Pool 故事一则

    Apache Commons Pool 故事一则 最近工作中遇到一个由于对commons-pool的使用不当而引发的问题,习得正确的使用姿势后,写下这个简单的故事,帮助理解Apache Commons ...

  2. 池化 - Apache Commons Pool

    对于那些创建耗时较长,或者资源占用较多的对象,比如网络连接,线程之类的资源,通常使用池化来管理这些对象,从而达到提高性能的目的.比如数据库连接池(c3p0, dbcp), java的线程池 Execu ...

  3. JedisCluster中应用的Apache Commons Pool对象池技术

    对象池技术在服务器开发上应用广泛.在各种对象池的实现中,尤其以数据库的连接池最为明显,可以说是每个服务器必须实现的部分.   apache common pool 官方文档可以参考:https://c ...

  4. Apache Commons Pool 故事一则 专题

    Apache Commons Pool 故事一则 最近工作中遇到一个由于对commons-pool的使用不当而引发的问题,习得正确的使用姿势后,写下这个简单的故事,帮助理解Apache Commons ...

  5. Tomcat 开发web项目报Illegal access: this web application instance has been stopped already. Could not load [org.apache.commons.pool.impl.CursorableLinkedList$Cursor]. 错误

    开发Java web项目,在tomcat运行后报如下错误: Illegal access: this web application instance has been stopped already ...

  6. NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool

    错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/pool/impl ...

  7. Spring + Tomcat 启动报错java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool

    错误如下: -- ::,-[TS] INFO http-- org.springframework.beans.factory.support.DefaultListableBeanFactory - ...

  8. org/apache/commons/pool/impl/GenericObjectPool异常的解决办法

    org/apache/commons/pool/impl/GenericObjectPool异常的解决办法 webwork+spring+hibernate框架的集成, 一启动Tomcat服务器就出了 ...

  9. 对象池化技术 org.apache.commons.pool

    恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率.Jakarta Commons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以 ...

  10. Cache Lucene IndexReader with Apache Commons Pool

    IndexReaderFactory.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 2 ...

随机推荐

  1. SQL Script for select data from ebs and make a csv file to FTP

    DECLARE CURSOR cur_lcy_test IS SELECT rcta.customer_trx_id, rcta.trx_number, rcta.trx_date FROM ra_c ...

  2. CMS (内容管理系统)

    ylbtech-Miscellaneos:CMS (内容管理系统) CMS是"Content Management System"的缩写,意为"内容管理系统". ...

  3. CF 329A(Purification-贪心-非DLX)

    A. Purification time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...

  4. 奇怪吸引子---Arneodo

    奇怪吸引子是混沌学的重要组成理论,用于演化过程的终极状态,具有如下特征:终极性.稳定性.吸引性.吸引子是一个数学概念,描写运动的收敛类型.它是指这样的一个集合,当时间趋于无穷大时,在任何一个有界集上出 ...

  5. go语言之进阶篇字符串转换

    1.字符串转换 示例: package main import ( "fmt" "strconv" ) func main() { //转换为字符串后追加到字节 ...

  6. iOS开发-UITapGestureRecognizer手势

    手势在iOS开发中是一个比较常用的功能,不过相对来说大家用的比较少,经常刷网易新闻,上次用了一下捏合手势才发现可以调整字体大小.昨天看到一个介绍摇一摇这个功能的,没看到之前一直都觉得摇一摇是微信的专有 ...

  7. Gradle Groovy 基础语法 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. jquery 控制css样式

    一.CSS 1.css(name) 访问第一个匹配元素的样式属性. 返回值 String 参数 name (String) : 要访问的属性名称 示例: $("p").css(&q ...

  9. jquery ajax跨域

    JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问 方法一: jsonp之 getJSON js var ...

  10. winrar5.50去广告教程(仅供学习使用)

    https://blog.csdn.net/EnigmCode/article/details/78328873 第一步:到WinRAR官网www.rarlab.com下载自己需要的版本,我这里选择C ...