Redis常见客户端异常汇总(Jedis篇).docx
《Redis常见客户端异常汇总(Jedis篇).docx》由会员分享,可在线阅读,更多相关《Redis常见客户端异常汇总(Jedis篇).docx(7页珍藏版)》请在第壹文秘上搜索。
1、JediS是RediS的java版本的客户端实现。在RediS客户端的使用过程中,无论是客户端使用不当或者RediS服务端出现问题,客户端会反应出一些异常,本文分析了Jedis使用过程中常见的异常情况。一、无法从连接池获取到连接JediSPooI中的JediS对象个数是有限的,默认是8个。这里假设使用的默认配置,如果有8个JediS对象被占用,并且没有归还,如果调用者还要从JediSPoOl中借用Jedis,就需要进行等待(例如设置了maxWaitMillisO),如果在maxWaitMillis时间内仍然无法获取到Jedis对象就会抛出如下异常。redis.clients.jedis.exc
2、eptions.JedisconnectionExceptionzcouldnotgetaresourcefromthepool.Causedbyijava.Uti1.NosuchElementExceptionzTmons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:449)还有一种情况,就是设置了blockWhenExhausted=false,那么调用者发现池子中没有资源时,会立即抛出异常不进行等待下面的异常就是blockWhenExhausted=false时的效果。redis.clients.jed
3、is.exceptions.JedisconnectionExceptionzcouldnotgetaresourcefromthepool.Causedby:java.util.NoSuchElementException:Pmons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:464)对于这个问题,需要重点讨论的是为什么连接池没有资源了,造成没有资源的可能的原因非常多1 .客户端:高并发下连接池设置过小,出现供不应求,所以会出现上面的错误,但是正常情况下只要比默认的最大连接数(8个)多一些即可,因为正常情
4、况下JediSPOoI以及Jedis的处理效率足够高。2 .客户端:没有正确使用连接池,比如没有进行释放,例如下面代码所示:定义JediSPOol,使用默认的连接池配置。GenericObjectPoolConfigpoolConfig=newGenericObjectPoolConfig();JedisPooljedisPool=newJedisPool(poolConfig,l27.0.0.,6379)jJedisPool借用8次连接,但是没有执行归还操作。for(inti=0;i,maxmemory.八、客,端连接数过大如果客户端连接数超过了maxclients,新申请的连接就会出现如下
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Redis 常见 客户端 异常 汇总 Jedis
