为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

至尊宝的传说 2023-08-09 15:01:44
我用来ReactiveRedisConnection配置与本地 redis 容器的连接。但将来应用程序将托管在 Web 服务器上,而 Redis 将托管在不同的服务器上。是否有任何选项可以设置请求超时?
查看完整描述

2 回答

?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

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


所以在配置类上:


@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");

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


查看完整回答
反对 回复 2023-08-09
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

可以在反应式连接实现上配置超时。如果您使用 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());

}


查看完整回答
反对 回复 2023-08-09
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信