4、redis之使用commons-pool
增加池的配置文件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的更多相关文章
- Apache Commons Pool 故事一则
Apache Commons Pool 故事一则 最近工作中遇到一个由于对commons-pool的使用不当而引发的问题,习得正确的使用姿势后,写下这个简单的故事,帮助理解Apache Commons ...
- 池化 - Apache Commons Pool
对于那些创建耗时较长,或者资源占用较多的对象,比如网络连接,线程之类的资源,通常使用池化来管理这些对象,从而达到提高性能的目的.比如数据库连接池(c3p0, dbcp), java的线程池 Execu ...
- JedisCluster中应用的Apache Commons Pool对象池技术
对象池技术在服务器开发上应用广泛.在各种对象池的实现中,尤其以数据库的连接池最为明显,可以说是每个服务器必须实现的部分. apache common pool 官方文档可以参考:https://c ...
- Apache Commons Pool 故事一则 专题
Apache Commons Pool 故事一则 最近工作中遇到一个由于对commons-pool的使用不当而引发的问题,习得正确的使用姿势后,写下这个简单的故事,帮助理解Apache Commons ...
- 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 ...
- NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
错误:Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/pool/impl ...
- Spring + Tomcat 启动报错java.lang.ClassNotFoundException: org.apache.commons.pool.impl.GenericObjectPool
错误如下: -- ::,-[TS] INFO http-- org.springframework.beans.factory.support.DefaultListableBeanFactory - ...
- org/apache/commons/pool/impl/GenericObjectPool异常的解决办法
org/apache/commons/pool/impl/GenericObjectPool异常的解决办法 webwork+spring+hibernate框架的集成, 一启动Tomcat服务器就出了 ...
- 对象池化技术 org.apache.commons.pool
恰当地使用对象池化技术,可以有效地减少对象生成和初始化时的消耗,提高系统的运行效率.Jakarta Commons Pool组件提供了一整套用于实现对象池化的框架,以及若干种各具特色的对象池实现,可以 ...
- 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 ...
随机推荐
- 为什么你的session不见了
一:现象 有小伙伴写了下面一段代码,然后发现,随着每次关闭浏览器,count的值重新开始计数了,如下: protected void doGet(HttpServletRequest request, ...
- idea创建springcloud项目图文教程(EurekaServer注册中心)
http://blog.csdn.net/hcmony/article/details/77854999 idea创建springcloud项目图文教程(EurekaServer注册中心)(六) 1, ...
- iCOM组件(iComponent,应用或学习组件)
iCOM(英文全称:i + component,应用或学习组件,或iCOM组件),为学习资源的一种表现形式,是面向不同类型的学习对象(某一知识点或某一类知识点,如词汇.句子)专门开发的.在外部可重用的 ...
- git如何删除远端不存在的本地分支?
问题:远端分支删除后,如何删除之前拉取的本地分支? 答案: git fetch -p git remote show origin 可以查看remote地址,远程分支,还有本地分支与之相对应关系等信息 ...
- The node (XXX.XXX.XXX.XXX,XXX.XXX.XXX.XXX)has already some ScaleIO components installed
安装ScaleIO 1.32遇到如下报错, 怎么办? 很简单, 在控制面板里把ScaleIO的软件删掉即可.
- 让App中增加LruCache缓存,轻松解决图片过多造成的OOM
上次有过电话面试中问到Android中的缓存策略,当时模糊不清的回答,如今好好理一下吧. Android中普通情况下採取的缓存策略是使用二级缓存.即内存缓存+硬盘缓存->LruCache+Dis ...
- 转:查看linux系统版本号
转自: http://blog.csdn.net/zhuying_linux/article/details/6859286 lsb_release -a
- 在javascript中substr和substring的区别是什么
1.substring 用于提取字符串中介于两个指定下标之间的字符 substring(start,end) 开始和结束的位置,从零开始的索引 substring 方法返回的子串包括 start ...
- 2017年11月8日最新仿互站导航t5友价商城-9套模板首页都增加微信登陆
今天测试效果如下,直接看图吧,入口在下方,点击图片直达 把9套餐模板都添加了微信首页登陆,仿互站的导航,操作比互站还要方便,官方一直对https 支持不太友好,索性把所有的https bug都修复了, ...
- ecshop二次开发 使用ecshop电子商务系统的100个小问题
自己从事B4C电子商务开发一段时间了,特别对ecshop深有体会,刚接触的时候不容易理解,下面将根据自己的经验,来总结100条关于操作ecshop电子商务系统的小问题. 1:如何修改网站"欢 ...