首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高性能、高可靠性的jedis连接设置

高性能、高可靠性的jedis连接设置
EN

Stack Overflow用户
提问于 2015-03-28 00:19:28
回答 1查看 17.2K关注 0票数 11

我使用Jedis客户端连接到我的Redis服务器。以下是我用来连接Jedis的设置(使用apache公共池):

代码语言:javascript
复制
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(true);
poolConfig.setMaxIdle(400);

// Tests whether connections are dead during idle periods
poolConfig.setTestWhileIdle(true);
poolConfig.setMaxTotal(400);

// configuring it for some good max value so that timeout don't occur
poolConfig.setMaxWaitMillis(120000);

到目前为止,有了这些设置,我在可靠性方面没有遇到任何问题(我总是可以随时获得Jedis连接),但我看到Jedis性能有一定的滞后。

有没有人能给我提一些更多的优化建议,以获得高性能?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-29 20:33:55

您配置了3个测试:

  • TestOnBorrow -当您请求resource.
  • TestOnReturn时发送PING请求-当您将资源返回到pool.
  • TestWhileIdle时发送PING -从池中的空闲资源发送定期PING。

虽然很高兴知道你的连接还活着,但在你的请求之前,这些onBorrow PING请求正在浪费一个RTT,而其他两个测试正在浪费宝贵的Redis资源。从理论上讲,即使在PING测试之后,连接也可能变坏,因此即使发送PING,您也应该在代码中捕获连接异常并处理它。如果您的网络是稳定的,并且您没有太多的丢弃,则应该删除这些测试,并仅在异常捕获中处理此场景。

此外,通过设置MaxIdle == MaxTotal,将不会从您的池中逐出资源(好/坏?,取决于您的使用情况)。当您的池耗尽时,获取资源的尝试将在等待空闲资源2分钟后超时。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29305418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档