问题标签 [redis-streams]

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 投票
1 回答
180 浏览

redis - 反向读取多个 Redis Streams(想象中的 XREVREAD 命令)

使用 redis 流,我可以按时间顺序读取多个流。每个流从一个时间点一直读取到该流中的最新点。我可以在多个流中获取最旧的项目

XREAD COUNT 1 STREAMS streamA streamB streamC 0-0 0-0 0-0

并从那里(注意返回的 id)继续消费选择流中的所有项目。将消费限制为每个流仅 1 个项目。

我怎样才能轻松地反向消耗多个流。从流中提示的最新项目开始并及时倒退,同时将每个流中的消费限制为仅 1 个项目?

0 投票
3 回答
1509 浏览

java - 如何使用 lettuce java 库持续监听 redis 流

我正在尝试收听 redis 流并在消息到达时处理消息。我正在使用异步命令,我希望消息被推送而不是被拉取。所以我认为不需要while循环。但是下面的代码似乎不起作用。

它只打印程序启动时流的任何内容,而不打印程序运行时添加的消息。不是应该为新添加到流中的每条消息调用回调吗?

0 投票
1 回答
1478 浏览

redis - 有没有办法订阅类似于 Redis pub/sub 的 Redis Streams?

我正在构建一个数据管道,它使用Maxwell Daemon实时读取 MySQL 二进制日志,Maxwell Daemon 将数据推送到 Redis 流。我已经构建了一个客户端,它使用来自 Redis 流的数据来处理它。目前,我正在使用具有几毫秒睡眠时间的无限循环来轮询XREAD ,以使用流中的数据,但我发现这是一个低效的解决方案。

我正在寻找一种方法,我可以以某种方式订阅 Redis 流,并在新条目添加到流时收到通知,并遇到这个GitHub 问题,他们谈论使用 Redis 发布/订阅和流来实现此功能。

有没有更有效的方式来构建这个系统?

0 投票
1 回答
1712 浏览

redis - 如何为redis流定义TTL?

我有两个微服务,我需要在它们之间实现可靠的通知。我考虑过使用 redis 流 - serviceA 将使用标识符 X 向 serviceB 发送请求。一旦 serviceB 完成 serviceA 要求的工作,它将创建/添加到流(流特定于 X)一个新项目让它知道它已经完成了。

ServiceA 可以发送多个请求,每个请求可能有不同的标识符。所以它会阻止不同流中的新元素。

我的问题是如何根据年龄删除不再需要的流。例如,我想删除一天前创建的流。这可能吗?

如果不是,我很想听听您关于如何在 redis 中不使用不需要的流的任何想法。

谢谢

0 投票
1 回答
374 浏览

java - Redis 使用 Java 为每个消费者流式传输一条消息

我正在尝试使用 redis 流实现一个 java 应用程序,其中每个消费者只使用一条消息。就像一个管道/队列,每个消费者只接收一条消息,处理它,并在完成后消费者接收下一条消息,该消息到目前为止尚未在流中处理。有效的是每条消息都由一个消费者(使用 xreadgroup)消费。

从 redislabs 开始阅读本教程

编码:

我目前的问题是,一个消费者从队列中获取多于一条消息,在某些情况下,其他消费者正在等待,而一个消费者一次处理 10 条消息。

提前致谢!

0 投票
0 回答
500 浏览

redis - Redis Streams 可以作为 Flink 的源吗

我是 Flink 的新手,正在阅读文档。我发现 Redis 可以用作 SINK(通过 Apache Bahir)。但是没有提到使用 Redis Streams 作为源,用于流数据。是否可以将 Redis 流作为源添加到 Flink?

我尝试用谷歌搜索,但找不到任何答案。如果已经问过这个问题,请提供链接,因为我找不到它。

0 投票
1 回答
188 浏览

redis - 如何获得 minIdleTime 大于某个值的待处理项目?

使用 Redis 流,我们可以有一些消费者没有完成的待处理项目。我可以使用xpending 命令找到此类项目。让我们有两个待处理的项目:

通过使用xpending我们可以仅基于 id 设置过滤器的问题。我有几个服务节点(A, B)进行僵尸检查:XPENDING mystream test_group - 5 1 他们每个人都收到"1-0"物品并制作xclaim,只有其中一个(例如A)成为所有者并开始处理该物品。但是再次B运行xpending以获取新项目但它再次接收,"1-0"因为它尚未被处理(A正在工作)并且看起来我的所有队列都被阻止了。

有什么解决方案可以避免它并同时处理待处理的项目吗?

0 投票
1 回答
451 浏览

redis - 将数据从 Redis 流移动到不在内存中的存储

https://redis.io/topics/streams-intro#capped-streams文档提到了封顶流以防止内存过载:

...有时在流中最多包含给定数量的项目很有用,有时一旦达到给定大小,将数据从 Redis 移动到不在内存中的存储是很有用的...

然而,它只解释了 redis 修剪流的功能。我找不到任何概念或经过验证的方法来实际从 redis 移动数据。我知道我可以创建一个消费者来将所有事件移动到无限的地方,但上面引用的声明表明我应该能够以有效的方式只移动旧事件。你能分享一个解决方案的想法吗?

0 投票
1 回答
914 浏览

redis - Redis,XREADGROUP 流与块一年,愚蠢?

告诉 XREADGROUP 阻止直到有消息而不是客户端必须轮询是否有任何缺点?

从:

https://redis.io/commands/xreadgroup

目前尚不清楚这意味着:

有人可以阐明Redis 中流的阻塞机制吗?

0 投票
2 回答
751 浏览

python - 从redis流和python获取int或float响应

我正在将数据添加到 redis 流中,数据为整数或浮点数

然后我有一个读取流数据的 python 应用程序。

问题是字典中的结果数据将始终为字符串格式。有人建议我使用hiredis,但我找不到如何获得非字符串输出。有没有办法让 redis 或hiredis 自动将数据转换为正确的数字类型?还是我必须自己实施铸造?