Redis客户端生菜命令超时与套接字超时

问题描述 投票:1回答:1

我们已经定义了Lettuce客户端连接工厂能够连接到Redis定义自定义套接字和命令超时:

@Bean
LettuceConnectionFactory lettuceConnectionFactory() {

   final SocketOptions socketOptions = SocketOptions.builder().connectTimeout(socketTimeout).build();
   final ClientOptions clientOptions =
           ClientOptions.builder().socketOptions(socketOptions).build();

   LettuceClientConfiguration clientConfig = LettuceClientConfiguration.builder()
           .commandTimeout(redisCommandTimeout)
           .clientOptions(clientOptions).build();
   RedisStandaloneConfiguration serverConfig = new RedisStandaloneConfiguration(redisHost,
           redisPort);

   final LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(serverConfig,
           clientConfig);
   lettuceConnectionFactory.setValidateConnection(true);
   return new LettuceConnectionFactory(serverConfig, clientConfig);
}

enter image description here

生菜文档定义默认值:

  • 默认套接字超时为10秒
  • 默认命令超时为60秒

如果Redis服务已关闭,则应用程序必须在300毫秒内收到超时。哪个值必须定义为最大值?

Github示例项目:https://github.com/cristianprofile/spring-data-redis-lettuce

redis timeout spring-data-redis lettuce
1个回答
2
投票

在套接字选项中,指定连接超时。这是Redis客户端(Lettuce)尝试建立与Redis服务器的TCP / IP连接的最长时间。该值应该相对较小(例如最多1分钟)。

如果客户端在1分钟内无法建立与服务器的连接,我想可以说服务器不可用(服务器关闭,地址/端口错误,网络安全,如防火墙禁止连接等)。

命令超时完全不同。建立连接后,客户端可以向服务器发送命令。它希望服务器响应这些命令。超时配置客户端等待服务器命令响应的时间。

我认为如果客户端命令向服务器发送大量数据并且传输和存储如此多的数据需要时间,则可以将此超时设置为更大的值(例如几分钟)。

© www.soinside.com 2019 - 2024. All rights reserved.