zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
    MLIR算子量化Quantization
    最大限度地减少块输出中间结果的计算和存储
    Echarts(一)
    Oracle部署安装
    JS使用
    sqlplus导入sql,dmp导入导出
    一款强大的Visual Studio插件!CodeRush v19.1.9全新来袭
    Web界面开发必看!Kendo UI for jQuery编辑功能指南第二弹
    报表开发神器!DevExpress Reporting v19.1全平台新功能解析
  • 原文地址:https://www.cnblogs.com/linkstar/p/6013379.html
Copyright © 2011-2022 走看看