gpt4 book ai didi

redis - 用于获取和设置/刷新操作的 Jedis 池配置

转载 作者:可可西里 更新时间:2023-11-01 11:27:58 26 4
gpt4 key购买 nike

我是 Redis 新手,在我的应用程序中使用 Jedis 客户端。我经历了几个话题,但没有找到决定性的答案。

我有 2 个问题需要澄清。

  1. 对于我的生产用途,我想为 jedis get 操作和 set 操作设置单独的超时。对于所有设置操作,我想将超时设置为 2000 毫秒并获取 100 毫秒。我已经实现了以下配置。

    JedisPoolConfig poolConfig = new JedisPoolConfig();
    poolConfig.setMaxIdle(30);
    poolConfig.setMinIdle(10);
    poolConfig.setMaxWaitMillis(2000);
    jedisPool = new JedisPool(poolConfig, RedisDBUrl, port, 100);

    让我知道以上配置是否可以完成工作。我将读取超时设置为 100 毫秒,将 maxwait 设置为 2000 毫秒。

  2. 如果我的理解正确,请告诉我。

    有时我得到 JedisConnectionException: java.net.SocketTimeoutException: Read timed out 或者有时 connect timeout

    当我的应用程序无法在配置的时间内连接到 redis 时,这里会抛出连接超时?

    其次,当应用程序连接到 redis 但操作(get/set)正在花费时间或出于某种原因时,会出现读取超时?

    最后,如何配置读取超时和连接超时?

最佳答案

经过多次尝试和一些测试运行发现,您不能为jedis get和set操作设置单独的超时。也许你可以使用一些外部库来实现(比如谷歌的 SimpleTimeLimiter。

据我观察,当 jedis 尝试连接到 redis 服务器时会发生连接超时。在我的例子中,我的系统的 redis 服务器延迟是 ~120-125ms,所以如果我在 jedis 构造函数中设置 timeout=100ms,我会得到“连接超时”。

而当您连接到 redis 服务器但 redis 操作未在指定时间内返回时,会出现“读取超时”。为了测试这个场景,我在构造函数中将超时设置为 180 毫秒,并尝试运行 flushall 操作(需要很长时间),这里我得到了读取超时。

仍然不确定 poolConfig.setMaxWaitMillis() 的意义是什么。

关于redis - 用于获取和设置/刷新操作的 Jedis 池配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43949977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com