当前位置: 首页 > 知识库问答 >
问题:

配置绝地超时

严瑞
2023-03-14

我在完成时遇到问题。hgetall(),以下是我尝试过的:

Jedis jedis = new Jedis(REDIS_MASTER_NODE);
jedis.connect();
jedis.configSet("timeout", "30");

Map<String, String> alreadyStored = jedis.hgetAll(redisTargetHash);

以下是我得到的:

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.getBinaryMultiBulkReply(Connection.java:199)
    at redis.clients.jedis.Jedis.hgetAll(Jedis.java:851)

这就解决了问题:

Jedis jedis = new Jedis(REDIS_MASTER_NODE, 6379, 1800);

共有3个答案

董俊晖
2023-03-14

需要考虑的几件事:

>

  • 对于Jedis和Jedispool类,超时以毫秒为单位。默认超时,至少在2.5.1中,如我所见,是2000(milisec):intredis.clients.jedis.协议。DEFAULT_TIMEOUT=2000[0x7d0]

    根据本文档,Redis 2.6或更高版本不会关闭连接,即使客户端处于空闲状态。我还没有证实这一点,我会尝试更新后,我这样做。

  • 陆敏学
    2023-03-14

    这是对xetorthio答案的一点扩展,但这里有一个类似的方法用于JedisPool。(注意:这是基于我对Jedis 2.6.2版代码的理解,并没有在实际用例中进行测试。)

        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxWaitMillis(writeTimeout);
        JedisPool pool = new JedisPool(jedisPoolConfig, redisHost, port, readTimeout);
    

    writeTimeout是池中绝地资源等待写入操作的最长时间。

    为池构造函数指定的readTimeout是套接字读取的等待时间,请参见java。网插座设置otimeout,了解更多详细信息。

    谢鸿羲
    2023-03-14

    如果要设置Jedis connectiontimeout,则应使用专门为其设计的构造函数

    public Jedis(final String host, final int port, final int timeout)
    

    您所做的是从Jedis中设置Redis设置的超时。执行CONFIG SET超时60,意味着Redis将在60秒后关闭空闲的客户端连接。这就是为什么您在Jedis中获得异常。

     类似资料:
    • 问题内容: 我在完成时遇到问题,这是我尝试过的操作: 这就是我得到的: 这解决了问题: 问题答案: 如果要设置Jedis connection ,则应使用为此专门设计的构造函数进行设置: 您正在做的是从设置Redis设置的超时。这样做,意味着redis将在几秒钟后关闭空闲的客户端连接。这就是为什么您在Jedis中遇到例外的原因。

    • JTA事务意外回滚(可能是由于超时);嵌套的异常是 由于JPA,我得到了一个超时异常:如何增加事务所需的时间? 我应该在哪里包括参数来解决这个问题? 我用的是Tomcat7。

    • 问题内容: 如何在Spring Boot应用程序中配置(嵌入式)Tomcat会话超时? 我有一个SessionListener,但是我不知道必须在哪个类中将此Listener添加到Context中。 问题答案: 你应该能够在application.properties文件中进行设置。

    • 我正在使用Spring Boot版本2.1.9。带有Web、会话、安全、jdbc和jpa启动器的RELEASE。在我的应用程序中一切正常,直到我尝试覆盖默认会话超时值,application.properties中有以下行: 如果添加这一行,在启动Spring时,我会得到以下错误: 我还尝试了不同的格式,如180s或PT180S,但都不起作用。根据Spring文档或同一文档的其他变体,只有整数的版

    • 本部分下载 OpenShift 所需要的安装包,并基于http 服务器创建本地 yum 源。 绑定订阅账户注册账户 # subscription-manager register --username=<user_name> --password=<password>查找包含 OpenShift 订阅的 Pool ID # subscription-manager list --available

    • 我看到了很多“java.net.ConnectException:Connection Relection”问题,但没有一个问题提到此错误的超时。我的问题是,我必须连接到一个服务器,在某些情况下,是阻塞的(由另一个软件连接到同一个端口)。所以,我正在做一个循环,用一些最大的重试来尝试连接: 我当前的代码(当然,依赖于我的软件的许多配置,但运行良好): null Linux: 2019-12-05