Java 无法连接到telnet redis服务器

Java 无法连接到telnet redis服务器,java,spring,redis,pool,jedis,Java,Spring,Redis,Pool,Jedis,我的redis服务器位于VMWare服务器中,我可以通过cli从telnet连接redis服务器: C:\Users\Administrator>rediscli-h192.168.0.243-p6379 192.168.0.243:6379>获取名称 (错误)不需要身份验证。 192.168.0.243:6379>验证根目录 好啊 192.168.0.243:6379>获取名称 “池ZZZQQQQ” 192.168.0.243:6379> 在我的java代码中,我可以通过绝地成功连接到redi

我的redis服务器位于VMWare服务器中,我可以通过cli从telnet连接redis服务器:

C:\Users\Administrator>rediscli-h192.168.0.243-p6379
192.168.0.243:6379>获取名称
(错误)不需要身份验证。
192.168.0.243:6379>验证根目录
好啊
192.168.0.243:6379>获取名称
“池ZZZQQQQ”
192.168.0.243:6379>

在我的java代码中,我可以通过绝地成功连接到redis服务器

杰迪斯德莫:

    Jedis jedis = new Jedis(constr) ;  
    jedis.auth("root"); 
    String output ;  
    jedis.set( "hello", "world" ) ;  
    output = jedis.get( "hello") ;  
    System. out.println(output) ;  
但我无法通过以下方式连接到redis服务器: 代码如下:

RedisUtils.java:

public class RedisUtils {

private JedisPool pool = null;

private final static String REDIS_IP = "192.168.0.243"; 

private final static int REDIS_PORT = 6379;

public RedisUtils() {
    this(REDIS_IP,REDIS_PORT);
}

public RedisUtils(String ip, int prot) {
    if (pool == null) {
        JedisPoolConfig config = new JedisPoolConfig();    
        config.setMaxTotal(100);  
        config.setMaxIdle(10);  
        config.setMaxWaitMillis(50 * 1000);   
        config.setTestOnBorrow(true);   
        config.setTestOnReturn(true);   
        config.setTestWhileIdle(true); 
        pool = new JedisPool(config, ip, prot, 100000,"root");  


    }
}

public RedisUtils(JedisPoolConfig config ,String ip, int prot){
    if (pool == null) {
        pool = new JedisPool(config,ip,prot,10000);
    }
}

public RedisUtils(JedisPoolConfig config ,String ip, int prot ,int timeout){
    if (pool == null) {
        pool = new JedisPool(config,ip,prot,timeout);
    }
}

public RedisUtils(JedisPool pool){
    if (this.pool == null) {
        this.pool = pool;
    }
}

public String get(String key){
    Jedis jedis = null;
    String value = null;
    try {
        jedis = pool.getResource();
        value = jedis.get(key);
    } catch (Exception e) {
        pool.close();
        e.printStackTrace();
    } finally {
        returnResource(pool, jedis);
    }
    return value;
}

public String set(String key,String value){
    Jedis jedis = null;
    try {
        jedis = pool.getResource();
        return jedis.set(key, value);
    } catch (Exception e) {
        pool.close();
        e.printStackTrace();
        return "0";
    } finally {
        returnResource(pool, jedis);
    }
}
...
再演示

    RedisUtils redisUtils = new RedisUtils();

    redisUtils.set("name", "pool zzzzqqqqq");

    System.out.println("get name : "+redisUtils.get("name"));
结果:

    redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the pool
at redis.clients.util.Pool.getResource(Pool.java:53)
at redis.clients.jedis.JedisPool.getResource(JedisPool.java:226)
at com.mbg.redis.RedisUtils.get(RedisUtils.java:122)
at com.mbg.redis.RedisDemo.poolTest(RedisDemo.java:25)
at com.mbg.redis.RedisDemo.main(RedisDemo.java:35)
Caused by: java.lang.IllegalStateException: Pool not open
at org.apache.commons.pool2.impl.BaseGenericObjectPool.assertOpen(BaseGenericObjectPool.java:672)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:412)
at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:363)
at redis.clients.util.Pool.getResource(Pool.java:49)
... 4 more
你能告诉我为什么吗?

提前谢谢你

我不确定您是否可以在JedisPool实例化中使用password参数来模拟AUTH命令

试试这个:

public String set(String key,String value){
    Jedis jedis = null;
    try {
        jedis = pool.getResource();
        jedis.auth("root");
        return jedis.set(key, value);
    } catch (Exception e) {
        pool.close();
        e.printStackTrace();
        return "0";
    } finally {
        returnResource(pool, jedis);
    }
}

我不确定您是否可以在JedisPool实例化中使用password参数来模拟AUTH命令

试试这个:

public String set(String key,String value){
    Jedis jedis = null;
    try {
        jedis = pool.getResource();
        jedis.auth("root");
        return jedis.set(key, value);
    } catch (Exception e) {
        pool.close();
        e.printStackTrace();
        return "0";
    } finally {
        returnResource(pool, jedis);
    }
}