JedisConnectionException: Unexpected end of stream.


在實際項目中遇到redis讀取時報錯。

報錯是

[ERROR]  redis.clients.jedis.exceptions.JedisConnectionException: Unexpected end of stream.
[ERROR]  redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:198)
[ERROR]  redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
[ERROR]  redis.clients.jedis.Protocol.process(Protocol.java:132)
[ERROR]  redis.clients.jedis.Protocol.read(Protocol.java:196)
[ERROR]  redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:288)
[ERROR]  redis.clients.jedis.Connection.getBinaryBulkReply(Connection.java:207)
[ERROR]  redis.clients.jedis.BinaryJedis.get(BinaryJedis.java:157)

 

網上首先找到的資料是修改redis服務器上面redis的配置

127.0.0.1:6380> CONFIG GET client-output-buffer-limit

127.0.0.1:6380> config set client-output-buffer-limit 'normal 0 0 0 slave 268435456 67108864 60 pubsub 0 0 0'

修改完成之后,再去修改redis的配置文件

client-output-buffer-limit pubsub 0 0 0

 

但是我這邊還是不行,在數據訪問量大的時候還是會出現上面的錯誤。

 

然后我修改了代碼中redisPool初始化的代碼。

/**
     * 原來的構造方法
     * @param ip 訪問的ip
     * @param port 訪問的端口
     */
    public RedisDaoImpl(String ip, int port){
        jedisPool = new JedisPool(ip,port);
    }

 

/**
     * 修改之后的構造方法
     * @param ip 訪問的ip
     * @param port 訪問的端口
     */
    public RedisDaoImpl(String ip, int port){
        JedisPoolConfig config = new JedisPoolConfig();
        //控制一個pool最多有多少個狀態為idle(空閑的)的jedis實例。
        config.setMaxIdle(5);
        //表示當borrow(引入)一個jedis實例時,最大的等待時間,如果超過等待時間,則直接拋出JedisConnectionException;
        config.setMaxWaitMillis(1000 * 100);
        //在borrow一個jedis實例時,是否提前進行validate操作;如果為true,則得到的jedis實例均是可用的;
        config.setTestOnBorrow(true);
        jedisPool = new JedisPool(config,ip,port);
    }

 

修改這個配置之后,錯誤不再出現。

主要是參考下面的文章給我的啟發。

里面的工具類包括redis的一些配置講的很清楚,之后的項目我會把我自己的redis改造一下,改造成他這樣的形式,便於我去操作。主要一些要注意的問題其中也提出了,值得學習。

http://www.cnblogs.com/antball/p/4976990.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM