有没有办法在 Java 中使用 Redis 反应设置超时?
Is there a way to set a timeout in Java with Redis reactive?
我正在使用 ReactiveRedisConnection
配置与本地 Redis 容器的连接。
但将来应用程序将托管在网络服务器上,而 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());
}
经过一些研究和测试,我发现必须在请求查询上设置超时。
所以在配置上 Class:
@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");
编辑:感谢所有在这里提供帮助的人。
我正在使用 ReactiveRedisConnection
配置与本地 Redis 容器的连接。
但将来应用程序将托管在网络服务器上,而 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());
}
经过一些研究和测试,我发现必须在请求查询上设置超时。
所以在配置上 Class:
@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");
编辑:感谢所有在这里提供帮助的人。