繁体   English   中英

有没有办法在Java中使用Redis反应设置超时?

[英]Is there a way to set a timeout in Java with Redis reactive?

我正在使用ReactiveRedisConnection配置与本地Redis容器的连接。

但是将来,该应用程序将托管在Web服务器上,而Redis将托管在其他服务器上。

是否可以为请求设置超时?

可以在您的反应式连接实施中配置超时。 如果您正在使用Lettuce进行Redis连接,则可以执行以下操作。

@Bean
public ReactiveRedisConnectionFactory reactiveRedisConnectionFactory() {
    return new LettuceConnectionFactory(new RedisStandaloneConfiguration(), LettuceClientConfiguration.builder().commandTimeout(Duration.ofSeconds(2)).build());
}

然后使用connectionFactory创建ReactiveRedisTemplate

@Bean
public ReactiveRedisTemplate<String, String> reactiveRedisTemplateString
  (ReactiveRedisConnectionFactory connectionFactory) {
    return new ReactiveRedisTemplate<>(connectionFactory, RedisSerializationContext.string());
}

经过一些研究和测试,我发现必须在请求查询上设置超时。

因此在配置类上:

@Bean
public ReactiveRedisTemplate<String, String> reactiveRedisTemplateString
(ReactiveRedisConnectionFactory connectionFactory) {
    return new ReactiveRedisTemplate<>
              (connectionFactory, RedisSerializationContext.string());
}

并在服务中:

@Autowired
private ReactiveRedisTemplate<String, Response> repository;
public Mono<String> execute(String value){
        return repository.opsForHash().entries("KEY_TO_SEARCH")
                .timeout(Duration.ofMillis(TIMEOUT))
                .collect(Collectors.toMap("CODE_HERE");

编辑:感谢所有在这里提供帮助的人。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM