zoukankan      html  css  js  c++  java
  • redis配置引发的问题

    在配置时配置了引入redis实例之前都有检查其是否可用:

     JedisPoolConfig config = new JedisPoolConfig();
                // 最大连接数
                config.setMaxTotal(maxTotal);
                // 最大连接空闲数
                config.setMaxIdle(maxIdle);
                //最大等待时间
                config.setMaxWaitMillis(maxWaitMillis);
                /*引入redis实例时检查其是否可用
                若开启,每一次获取redis实例时会先ping一下redis,才进行命令的发送,并且出现了有get命令直接返回PONG
                config.setTestOnBorrow(testOnBorrow);*/
                return new JedisPool(config, host, port);

    在实际应用中发现从jedis中get命令效率不高,我本地连接远程,一次耗时40-50ms,并且在有一定并发量的时候get命令返回的值为PONG

    原因:开启了检查是否可用时在引入每个redis时都会发送ping命令,造成效率较低,在有一定并发量的时候通过看redis监控发现在返回PONG时,redis后台服务器此时接收到两个接连的ping命令,导致将PONG返回给了get命令,并且接口耗时比较高

    看redis后台监控:

    去掉该配置后:接口耗时减少一半,不再出现get命令返回PONG的情况,但并发量大时也会出现socket closed的错误(寻找答案中)

    redis后台监控:

    建议慎用该配置:一、配置就意味着会多执行一条命令,效率较低

            二、高并发场景下会出现返回pong的情况

  • 相关阅读:
    第四周作业
    第四周上机练习
    第一次作业
    第八周作业
    第八周上机练习
    第七周作业
    第五次上机练习
    第六周作业
    第四次上机练习
    第三次上机练习
  • 原文地址:https://www.cnblogs.com/zhaolei1996/p/12635011.html
Copyright © 2011-2022 走看看