问题标签 [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.
redis - 通过 redis 流的 Redis 事务日志
redis 是否通过等效于 Dynamo Db 流的 redis 流提供事务日志来处理 Dynamo Db 数据的变化?
redis - Redis Streams vs Kafka Streams/NATS
Redis 团队为 Redis 5.0引入了新的Streams数据类型。由于 Streams 从第一个角度看起来像 Kafka 主题,因此似乎很难找到使用它的真实示例。
在流介绍中,我们与 Kafka 流进行了比较:
- 运行时消费者组处理。例如,如果三个消费者中的一个永久失败,Redis 将继续服务第一个和第二个,因为现在我们将只有两个逻辑分区(消费者)。
- Redis 流更快。他们从内存中存储和操作,所以这个就是这样。
我们有一些与 Kafka、RabbitMq 和 NATS 相关的项目。现在我们深入研究 Redis 流,尝试将其用作“pre kafka 缓存”,在某些情况下用作 Kafka/NATS 替代方案。现在最关键的一点是复制:
- 使用 AOF 复制将所有数据存储在内存中。
- 默认情况下,异步复制不会保证 XADD 命令或消费者组状态更改被复制:在故障转移之后,可能会丢失某些东西,这取决于追随者从主服务器接收数据的能力。这看起来像是扼杀任何尝试高负载流的兴趣。
- 由 Sentinel 或 Redis Cluster 操作的 Redis 故障转移过程仅执行尽力检查以故障转移到最新的追随者,并且在某些特定故障下可能会提升缺少某些数据的追随者。
还有上限策略。Redis Streams 的真正“上限资源”是内存,因此要存储多少项目或使用哪种上限策略并不那么重要。因此,每次您的消费者失败时,您都会获得峰值内存消耗或因上限而丢失的消息。
我们使用 Kafka 作为 RTB 投标人前端,每秒处理约 1,100,000 条消息,负载约 120 字节。使用 Redis,我们在写入时消耗约 170 mb/秒的内存,使用 512 GB RAM 服务器,我们为约 50 分钟的数据写入“保留”。因此,如果此时处理系统处于脱机状态,我们就会崩溃。
您能否详细介绍一下 Redis Streams 在现实世界中的使用情况,并且在某些情况下您可能会尝试自己使用它?或者可能是 Redis Streams 可以用于少量数据?
python - 将 Redis Streams 输出转换为 Pandas Dataframe
将Redis Stream输出(aioredis 客户端/hiredis 解析器)转换为 Pandas Dataframe的最快方法是什么,其中 Redis Stream ID 的时间戳和序列号以及值是正确类型转换的 Pandas 索引列?
示例 Redis 输出:
redis - COUNT 如何处理 XREADGROUP 中的多个流?
我想使用 RedisXREADGROUP
命令来使用来自多个Redis 流的消息。在这种情况下,参数是什么COUNT
意思(即它是消息的总数,还是每个流的消息数)?此外,是否可以在这种情况下准确读取一条消息?
redis - 如何防止Redis流内存无限增加?
我刚刚意识到只有一个消费者组存在时,XACK 不会自动删除消息。
我以为当所有消费者组都确认相同的消息时,该消息将被 Redis-server 删除,但似乎并非如此。
因此,Redis 流内存无限增加,因为不会删除任何消息。
也许防止这种情况的唯一方法是手动 XDEL 消息?但是我怎么知道所有的消费者群体都已经确认了这个消息呢?
需要帮助,谢谢!
redis - 如何在redis流中有效地使用XRange获取多条记录
查看 Redis 流并在流上构建索引(就像 EventStore 所做的那样),这工作得很好,我可以在流中获得一堆条目,除非我找不到一种按 id 返回所有记录的好方法,例如 MGET。这是我正在查看的内容的简化版本。
显然这是非常低效的,我想知道是否有某种方法可以在 1 个请求中从服务器获取它。
我还考虑过构建其他流的流,但它会导致消息重复,并且我们的消息会变大。是的,我可以将所有消息放在一个集合中,但是 2 级间接是一个太过分的桥梁。
python - Redis Streams 使用 XREAD 获取多个值
我有一个 redis 流“mystream”,我正在尝试使用:
XREAD 计数 5 块 50000 流 mystream $
读取附加到 mystream 的五个新条目,阻塞 50 秒。一旦我执行命令以使用以下命令将数据添加到 mystream:
XADD mystream a 5 b 6
被阻止的命令以单个条目作为输出退出。
有没有什么方法可以使用 XREAD 命令接收从现在到 50 年代附加的多个条目,或者我是否必须多次调用 XREAD 才能达到相同的效果?
redis - Redis 流 - 根据时间删除/过期事件
我正在玩 redis 流,到目前为止还不错。我试图了解是否有任何方式让我根据时间或其他方式使旧事件过期。我知道我们可以通过事件 ID 删除。但我不想记住/存储很难的事件ID。相反,我正在寻找一种方法来删除最后的 10K 事件或类似的东西。
redis - Redis 流 50k 消费者支持并行 - 容量要求
要支持一个消费者组内的 50k 个消费者并行消费和处理消息,Redis 的容量要求是多少?正在寻找针对相同场景的基础架构测试,并且需要了解注意事项。
redis - Redis Stream - 事件的订单保证
我用过卡夫卡。在 Kafka 中,事件的顺序是通过使用 id 来保证的。我们在 Redis 中有类似的东西吗?如果我在一个消费者组中有订单事件流和多个消费者,则与一个特定订单相关的所有事件都应按顺序处理。
事件 - 需要宣布的消息/通知/发生的任何事情。像订单创建事件,订单取消事件。
为了更清楚,
假设user1通过 order-service订购了一个名为ABC1的产品。此订单服务发布一个purchase-order-related
stram。user1 修改/更新订单服务在同一流中发布另一个事件作为第二条消息的 ABC1 的数量。这里消息的 ID 可能不同。但是,当有多个消费者时,是否可以保证这 2 条消息将由消费者组中的 1 个消费者处理?因为这两个消息/事件是相关的,应该按顺序处理。Kafka 通过使用ABC1产品购买的 order-id 进行分区来提供保证。