我使用Jedis客户端连接到我的Redis服务器。以下是我用来连接Jedis的设置(使用apache公共池):
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性能有一定的滞后。
有没有人能给我提一些更多的优化建议,以获得高性能?
发布于 2015-03-29 20:33:55
您配置了3个测试:
虽然很高兴知道你的连接还活着,但在你的请求之前,这些onBorrow PING请求正在浪费一个RTT,而其他两个测试正在浪费宝贵的Redis资源。从理论上讲,即使在PING测试之后,连接也可能变坏,因此即使发送PING,您也应该在代码中捕获连接异常并处理它。如果您的网络是稳定的,并且您没有太多的丢弃,则应该删除这些测试,并仅在异常捕获中处理此场景。
此外,通过设置MaxIdle == MaxTotal,将不会从您的池中逐出资源(好/坏?,取决于您的使用情况)。当您的池耗尽时,获取资源的尝试将在等待空闲资源2分钟后超时。
https://stackoverflow.com/questions/29305418
复制相似问题