当前位置: 首页 > 知识库问答 >
问题:

如何使用Redis streams的背压?

乐正宜人
2023-03-14

我是否遗漏了什么,或者没有办法用Redis streams产生反压力?如果生产商将数据推送到流中,消费者可以更快地使用数据,那么没有明显的方式向生产商发出信号,表明它应该停止或放慢速度。

我预计会有一个阻塞版本的XADD,它会阻塞客户机,直到空间在一个有限制的流中变为可用(类似于XREAD的阻塞版本,它允许用户等待数据变为可用),但情况似乎并非如此。

人们如何应对上述情况-

我知道一些数据流系统,比如Kafka,不需要背压,但Redis似乎没有类似的解决方案,而且对于许多Redis streams用例来说,这似乎是一个相对常见的问题。

共有2个答案

阎裕
2023-03-14

你为什么要这么做?除非你的内存不足,否则这不是一个问题,每个消费者都可以在空闲时阅读。

请注意,不要使用消费者组,只需通过XADD发布,读者通过存储在更接近Kafka的密钥中的位置通过XRANGE读取。每个分区使用一个流。

生产商可以检查每1K消息(通过XLEN)的表大小是否变得太大,以降低速度,如果这是一个问题,你不能向它抛出HW 5个节点,每个节点20 Gig,因为流分布在集群中非常容易。。我不明白这应该很容易,所以我可能错过了一些东西。

还有一个XADD版本,可以调整表格的大小,以确保你不会填满上面的内容,但是这个世界需要一些非常极端的东西。对我们来说,这对于发送最新状态的频繁的东西来说是两天的时间,对于其他人来说是9个月的时间。

另一件事不要在流中存储大消息,使用Blob或单独的键/存储。

傅奕
2023-03-14

如果启用了持久性(RDB或AOF),则流消息将被持久化,因此不需要背压<如果你使用复制品,你会有另一种程度的重复
只有当Redis没有足够的内存(或副本的网络带宽)来保存消息时,才需要背压<老实说,我从未见过这种情况。

 类似资料:
  • 问题内容: 我有一个带有文本的元素。每当我降低不透明度时,我就会降低整个身体的不透明度。有什么办法可以让我变得更黑,而不是其他所有? 问题答案: 只需将此代码添加到您的图像CSS 更新:并非所有浏览器都支持RGBa,因此您应该具有“后备颜色”。该颜色很可能是纯色(完全不透明),例如:。

  • 问题内容: 使JTable背景透明不是那么容易。我只想查看单元格的文本内容。 问题答案: 如果表本身或单元格都不透明,则该表将是透明的: 如果表格位于中,则也将使其透明: 至少,您可以删除网格线: 一个简单的结果是一件很大的工作…

  • 问题内容: 我正在使用CSS attrubutes: 不透明度:.9; 使DIV透明,但是当我在该DIV中添加另一个DIV时,它也使其透明。 我想使外部(背景)DIV仅透明。怎么样 ? 问题答案: 内部DIV无法撤消外部DIV的不透明度属性。如果要实现透明度,请使用或: 外层div: 内部div: 编辑 因为您已经添加了问题,所以我假设您还想要IE(旧版本)的有效解决方案。这应该可以工作(IE的最

  • 问题内容: 如何使用CSS翻转任何背景图片?可能吗? currenty我使用这个箭头图像中background-image的liCSS中 开启:visited我需要水平翻转此箭头。我可以这样做来制作另一个箭头图像,但我只是好奇地知道是否有可能在CSS中翻转图像:visited 问题答案: 在看到Alex的答案出现翻转的线索后,我发现只翻转背景而不是整个元素的方法。谢谢亚历克斯的回答 HTML CS

  • 本文向大家介绍使用css如何设置背景虚化?相关面试题,主要包含被问及使用css如何设置背景虚化?时的应答技巧和注意事项,需要的朋友参考一下

  • 问题内容: 有谁知道使用JavaScript交换网页背景色的简单方法? 问题答案: 修改JavaScript属性。 例如: 注意:这确实取决于页面的组合方式,例如,如果您使用的背景颜色不同的DIV容器,则需要修改其背景颜色而不是文档主体。