在实际项目中遇到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

JedisConnectionException: Unexpected end of stream.的更多相关文章

  1. 线上redis问题修复:JedisConnectionException: Unexpected end of stream.

    经过: 项目上线后经常报 Unexpected end of stream.; nested exception is redis.clients.jedis.exceptions.JedisConn ...

  2. 连接池你用对了吗?一次Unexpected end of stream异常的排查

    能收获什么? 更加了解TCP协议 Redis与客户端关闭连接的机制 基于Apache Common连接池的参数调优 Linux网络抓包 情况简介 近期迁移了部分应用到K8s中,业务开发人员反馈说,会发 ...

  3. 图片上传unexpected end of stream

    第二次上传头像图片的时候出现 unexpected end of stream 解决办法: 将第一次图片上传成功后做以下操作即可: mBitmapFile.delete(); mBitmapFile ...

  4. java.net.ProtocolException:unexpected end of stream

    原因:php 给android 写接口出现java.net.ProtocolException:unexpected end of stream,查找android方面原因时发现数据超长 ,发现htm ...

  5. 通过nginx转发,用外网连接阿里云的redis,报Unexpected end of stream的解决办法

    一.在与redis同一个内网的服务器上A的nginx做了下面的设置 stream { upstream redis { server  redis.rds.aliyuncs.com:6379 max_ ...

  6. Jedis Unexpected end of stream & java.net.SocketException: Broken pipe问题解决思路

    笔者一直维护的稳定基础服务测试环境不稳定了,这能忍!盘他,虽然不一定能完全盘的了. 背景: hrexternal 基础服务对外提供公司员工获取的多个接口,很多接口访问频率比较高,加了缓存,使用的是re ...

  7. Jedis超时时间设置梳理

    JedisConnectionException: Unexpected end of stream #932 Repeatable exception and for the life of me, ...

  8. Error creating bean with name 'enableRedisKeyspaceNotificationsInitializer'

    @Configuration public class HttpSessionConfig { @Bean public static ConfigureRedisAction configureRe ...

  9. Spring-Data-Redis 下实现jedis连接断开后自动重连

    原先使用jedis的时候,处理手段是在从连接池获取连接时捕获JedisConnectionException异常,在异常处理部分重新获取连接,但是spring data redis似乎不会,如下所示: ...

随机推荐

  1. easyDialog弹窗+zTree部门选择

    写一个父页面方法,将name和id赋值 function show(name,id) { $("#deptnoID").val(name); $("#deptnoId&q ...

  2. 实战JAVA虚拟机 JVM故障诊断与性能优化 pdf

    需要的小伙伴拿走,百度云盘:http://pan.baidu.com/s/1nvm6RHZ

  3. sublime text 设置

    https://packagecontrol.io/installation#Simple 下载 php 自动补全 点击菜单栏的:Preferences: 选择:Setting-User项: 然后在大 ...

  4. __stack_chk_fail栈检查失败

    1. __stack_chk_fail的作用 在了函数的局部变量和保存的指令指针(译注:此处指返回地址和EBP)之间.这个值被称作金丝雀(“canary”)值 参考 http://www.freebu ...

  5. usaco 17.Jan 铜组T3

    上午在打usaco月赛的铜组题,T1T2是用来秒杀的,然而T3卡了一上午,下面给出题面: 题意大概就是输入一个N*N的矩阵,矩阵中元素只有0与1两种状态,每次操作以左上角的点为矩阵中某一矩阵的左上方顶 ...

  6. Nginx将项目配置在子目录

    问题:一个完整的项目需要整合在另外一个项目中,作为一个子模块存在 有两个项目prject1 根目录/www/project1与project2 /www/project2,现在是想将probject1 ...

  7. ASP_Login

    ===第一种============================================================================================== ...

  8. Char device registration

    The kernel uses structures of type struct cdev to represent char devices internally. Include <lin ...

  9. 《JS权威指南学习总结--第八章 函数》

    内容要点: 一.JS函数是参数化的:函数的定义会包括一个称为形参的标识符列表,这些参数在函数体中像局部变量一样工作.函数调用会为形参提供实参的值.函数使用它们实参的值来计算返回值,成为该函数调用表达式 ...

  10. js 对象 视频 插入元素

    <!DOCTYPE html><html lang="en"><head>  <meta charset="UTF-8" ...