问题标签 [spring-data-redis-reactive]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
101 浏览

project-reactor - 使用 Reactor Kafka 和 Reactive Redis 构建反应式管道

我正在使用 Kafka 和 Redis 构建反应式管道。现有服务使用来自 Apache Kafka 的事件,应用业务逻辑并最终更新 Redis 集。我正在重构服务以使用反应式 API。

这是使用反应式 API 的示例代码。

以及过程记录

执行后的日志。

我观察到lettuce-nioEventLoop线程甚至用于处理 kafka 事件和 lettuce 回调。我不明白这种行为。有人可以阐明一下吗?

0 投票
1 回答
388 浏览

spring-data-redis-reactive - Spring Data Redis Reactive:StreamReceiver 到协程流程

我正在使用 Spring Data Redis 编写一个与 Redis Stream 一起使用的应用程序。我spring-data-redis用生菜。我可以成功写入流,因为我可以通过 redis-cli 直接在 Redis 中验证它,并且我看到消息在 Redis 中。当谈到使用从流中读取时StreamReceiver,它有点工作,但我的协程版本的测试失败了。

所以,我已经实现了两个版本来读取不同的返回类型:

  • Flux<TestData>. 我使用reactor-test类对其进行测试,类似于 Spring Data Redis 团队所做的。它工作正常:收到的物品被打印出来并且测试通过。
  • Flow<TestData>. 我使用 FlowTurbine 对其进行测试。即使打印出收到的物品,此测试也会失败;FlowTurbine 只是超时。我尝试使用直接阻塞Flow.toList()而不是 Turbine 的test,但在这种情况下,调用只会永远阻塞。当我处理 Flow 时,我可能做错了什么。我究竟做错了什么?以及如何解决?

TestDataRedisRepository.kt内容:

测试课TestDataRedisRepositoryTest.kt内容:

我的RedisConfig.kt内容:

TestData.kt

Redis 在默认端口上的 Docker 容器中运行。为了完整起见,这里是aplication.yamlbuild.gradle.kts

0 投票
0 回答
19 浏览

spring-cloud-gateway - 在 SpringCloudGateway 中更改 RateRequestLimiter 的默认行为

SpringCloudGateway 是一个很棒的项目,有很多自定义选项,但我遇到了一个问题,我希望 RateRequestLimiter 的默认行为 - 返回 429(太多请求)进行更新。

自定义行为 - 我希望将超过阈值(基于请求有效负载)的请求重定向到特定的应用程序实例,而不是被彻底拒绝。

我正在寻找可以实现这一目标的方法。

谢谢

0 投票
0 回答
55 浏览

redis - ReactiveRedisTemplate 列表操作 - 设置过期和 TTL

此集成测试使用 ReactiveRedisTemplate 列表操作来:

  1. 使用 ReactiveRedisTemplate 列表操作 leftPushAll() 将 List 推送到缓存

  2. 使用 ReactiveRedisTemplate 列表操作 range() 从缓存中检索列表作为通量,以检索列表中从索引 0 到列表中最后一个索引的所有元素

这个测试工作正常。我的问题是——存储在缓存中的这些 List 对象的 EXPIRY 和 TTL 是如何控制的?

我问的原因 - 在我的本地 Redis 服务器上,我注意到它们在缓存中保留了几个小时,但是当我对托管在 AWS 上的 Redis 服务器运行此代码时,列表对象似乎只保留在缓存中30分钟。

是否有可用于控制列表对象 TTL 的配置属性?

谢谢,理想情况下,我希望更好地控制这些对象在缓存中的保留时间。

0 投票
1 回答
29 浏览

java - 在 Spring 中链接对 redis 的响应式调用

我正在尝试获取所有键,然后使用ReactiveRedisTemplateSpring Data Redis中的 a 获取它们的所有值

(我知道这scan是可取的,但我现在想保持简单,除非这是我的问题)

代码片段:

问题是我得到了这个输出:

我希望:

我是 rx-java 的新手,所以我可能遗漏了一些东西。