日期:2014-05-19  浏览次数:20718 次

redis数据库连接出现的问题。
刚接触REDIS,我想写个程序但现在抱错,麻烦哪位高手帮忙解决一下。在线等待
程序代码如下:
package test;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class TestRedis {
private static String host = "127.0.0.1";
private static int port = 1317;
private static int timeout = 60 * 1000;
private static int maxActive = 99;
private static int maxIdle = 20;
private static long maxWait = 1000;
public static final int EXPIRE_TIME = 86400;

public static void main(String[] args) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(maxActive);
config.setMaxIdle(maxIdle);
config.setMaxWait(maxWait);
config.setTestOnBorrow(true);
JedisPool pool = new JedisPool(config, host, port, timeout,
"gfp-ni-zen-me-hai-bu-die?");
Jedis jedis = pool.getResource();
jedis.set("ab", "23434");
/*
 * //简单的key-value 存储 jedis.set("redis", "myredis");
 * System.out.println(jedis.get("redis"));
 */
}
}

抱错如下:
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:22)
at test.TestRedis.main(TestRedis.java:24)
Caused by: redis.clients.jedis.exceptions.JedisConnectionException: Unknown reply: S
at redis.clients.jedis.Protocol.process(Protocol.java:76)
at redis.clients.jedis.Protocol.read(Protocol.java:131)
at redis.clients.jedis.Connection.getStatusCodeReply(Connection.java:162)
at redis.clients.jedis.Jedis.auth(Jedis.java:1964)
at redis.clients.jedis.JedisPool$JedisFactory.makeObject(JedisPool.java:74)
at org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:974)
at redis.clients.util.Pool.getResource(Pool.java:20)
... 1 more

其中我用转发连接的数据库所以IP是127.0.0.1 端口是1317
------解决方案--------------------
没人回答的话我自己顶一下。
------解决方案--------------------
该回复于2012-08-22 09:18:11被版主删除
------解决方案--------------------
我也遇到这个问题了,所以找了一下,这个github上的一个答复:
THIS problem was nearly 100% caused by calling the same Connection by multi-thread