欢迎来到天天文库
浏览记录
ID:38164222
大小:20.99 KB
页数:4页
时间:2019-06-06
《Jedis连接池的使用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Jedis连接池的使用所需jar:jedis-2.1.0.jar和commons-pool-1.5.4.jarJedis操作步骤如下:1->获取Jedis实例需要从JedisPool中获取;2->用完Jedis实例需要返还给JedisPool;3->如果Jedis在使用过程中出错,则也需要还给JedisPool;代码如下:packagecom.ljq.utils;importredis.clients.jedis.Jedis;importredis.clients.jedis.JedisPool;importredis.clients.jedis.JedisPool
2、Config;/***Redis操作接口**@author林计钦*@version1.02013-6-14上午08:54:14*/publicclassRedisAPI{privatestaticJedisPoolpool=null;/***构建redis连接池**@paramip*@paramport*@returnJedisPool*/publicstaticJedisPoolgetPool(){if(pool==null){JedisPoolConfigconfig=newJedisPoolConfig();//控制一个pool可分配多少个jedis实例,通过
3、pool.getResource()来获取;//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。config.setMaxActive(500);//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。config.setMaxIdle(5);//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;config.setMaxWait(1000*100);//在borrow
4、一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;config.setTestOnBorrow(true);pool=newJedisPool(config,"192.168.2.191",8888);}returnpool;}/***返还到连接池**@parampool*@paramredis*/publicstaticvoidreturnResource(JedisPoolpool,Jedisredis){if(redis!=null){pool.returnResource(redis);}}/***获取
5、数据**@paramkey*@return*/publicstaticStringget(Stringkey){Stringvalue=null;JedisPoolpool=null;Jedisjedis=null;try{pool=getPool();jedis=pool.getResource();value=jedis.get(key);}catch(Exceptione){//释放redis对象pool.returnBrokenResource(jedis);e.printStackTrace();}finally{//返还到连接池returnResourc
6、e(pool,jedis);}returnvalue;}}代码说明:a、获取jedis实例时,实际上可能有两类错误。一类是pool.getReource(),得不到可用的jedis实例;另一类是jedis.set/get时出错也会抛出异常;为了实现区分,所以根据instance是否为null来实现,如果为空就证明instance根本就没初始化,也就不用return给pool;如果instance不为null,则证明是需要返还给pool的;b、在instance出错时,必须调用returnBrokenResource返还给pool,否则下次通过getResource得
7、到的instance的缓冲区可能还存在数据,出现问题!-------------------------------------------------JedisPool的配置参数很大程度上依赖于实际应用需求、软硬件能力。以前没用过commons-pool,所以这次花了一整天专门看这些参数的含义。。。JedisPool的配置参数大部分是由JedisPoolConfig的对应项来赋值的。maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActiv
此文档下载收益归作者所有