我们已将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);
}
莴苣文档定义默认值:
如果Redis服务关闭,则应用程序必须在300毫秒内收到超时。哪个值必须定义为最大值?
Github示例项目: https://github.com/cristianprofile/spring-data-redis-lettuce
答案 0 :(得分:2)
在套接字选项中,您可以指定连接超时。这是Redis客户端(Lettuce)尝试建立与Redis Server的TCP / IP连接所允许的最长时间。该值应该相对较小(例如,最多1分钟)。
如果客户端无法在1分钟内与服务器建立连接,我可以肯定地说服务器不可用(服务器已关闭,地址/端口错误,防火墙等网络安全禁止连接等)。
命令超时是完全不同的。建立连接后,客户端可以将命令发送到服务器。它期望服务器响应那些命令。超时配置客户端将等待服务器响应命令的时间。
我认为,如果客户端命令将大量数据发送到服务器,并且花费大量时间传输和存储大量数据,则可以将此超时设置为更大的值(例如几分钟)。