写了个循环读取单机redis库的方法,运行到了5250条读取的时候报错了,,,

打杂uu 发布于 2016/05/30 09:32
阅读 597
收藏 0
jedis.port=6379
jedis.maxActive=500
jedis.maxWait=2000
jedis.idle=100
 private static Log log = LogFactory.getLog(JedisUtil.class);
      
    private static JedisPool pool = null;  
    
    /**
     * 获取JedisUtil实例
     * @return
     */
    public static JedisUtil getInstance() {  
        return RedisUtilHolder.instance;  
    }  
    
    /** 
     *内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 
     *没有绑定关系,而且只有被调用到时才会装载,从而实现了延迟加载。 
     */  
    private static class RedisUtilHolder{  
        private static JedisUtil instance = new JedisUtil();  
    }
    
    /** 
     * 获取Jedis连接池. 
     * @return 连接池实例 
     */  
    public static JedisPool getPool() {  
        if(pool == null){
            try{ 
                String ip = Global.getConfig("jedis.ip");
                int port = Integer.parseInt(Global.getConfig("jedis.port"));
                JedisPoolConfig config = new JedisPoolConfig();  
                config.setMaxActive(Integer.parseInt(Global.getConfig("jedis.maxActive")));  
                config.setMaxIdle(Integer.parseInt(Global.getConfig("jedis.idle")));  
                config.setMaxWait(Long.parseLong(Global.getConfig("jedis.maxWait")));  
                config.setTestOnBorrow(true);  
                config.setTestOnReturn(true);  
                pool = new JedisPool(config, ip, port); 
            } catch(Exception e) {  
                log.error("获取Jedis连接池出错:", e); 
            }
        }
        return pool;  
    }  
  
    /** 
     * 获取Jedis实例. 
     * @return Jedis 
     */  
    public Jedis getJedis() {  
        Jedis jedis  = null;  
        try{   
            jedis = getPool().getResource();  
        } catch (Exception e) {  
            log.error("获取Jedis实例出错:", e);  
            closeJedis(jedis);    
        }  
        return jedis;  
    }  
  
    /** 
     * 释放jedis实例到连接池. 
     * @param jedis redis实例 
     */  
    public void closeJedis(Jedis jedis) {
        try{
            if(jedis != null) {  
                getPool().returnResource(jedis);  
            }  
        }catch(Exception e){
            log.error("关闭Jedis实例出错:", e);  
        }
        
    } 
    
    /** 
     * 销毁Jedis连接池
     * @param jedis redis实例 
     */  
    public void destroyPool() {  
        try{
            getPool().destroy();  
        }catch(Exception e){
            log.error("销毁Jedis连接池出错:", e);  
        }
    } 
    
Exception in thread "main" redis.clients.jedis.exceptions.JedisConnectionException: java.net.SocketTimeoutException: Read timed out
	at redis.clients.jedis.Protocol.process(Protocol.java:79)
	at redis.clients.jedis.Protocol.read(Protocol.java:131)
	at redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:182)
	at redis.clients.jedis.Connection.getBulkReply(Connection.java:171)
	at redis.clients.jedis.Jedis.get(Jedis.java:67)
	at com.qjj.test.TestTT.main(TestTT.java:30)
Caused by: java.net.SocketTimeoutException: Read timed out
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:150)
	at java.net.SocketInputStream.read(SocketInputStream.java:121)
	at java.net.SocketInputStream.read(SocketInputStream.java:107)
	at redis.clients.util.RedisInputStream.fill(RedisInputStream.java:109)
	at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:45)
	at redis.clients.jedis.Protocol.process(Protocol.java:64)
	... 5 more



加载中
返回顶部
顶部