redis - 如何在 Redis 流中使用背压?
问题描述
我是否遗漏了什么,或者没有办法使用 Redis 流产生背压?如果生产者将数据推送到流中,消费者可以更快地消费它,那么没有明显的方法可以向生产者发出信号表明它应该停止或放慢速度。
我预计会有一个阻塞版本XADD
,它会阻塞客户端,直到空间在有上限的流中可用(类似于XREAD
允许消费者等待数据可用的阻塞版本),但这似乎不是案子。
人们如何处理上述情况——向生产者发出信号,告诉它应该推迟向流中添加更多项目?
我了解一些数据流系统(例如 Kafka)不需要背压,但 Redis 似乎没有可比的解决方案,而且对于许多 Redis 流用例来说,这似乎是一个相对常见的问题。
解决方案
如果您打开了持久性(RDB 或 AOF),您的流消息将被持久化,因此不需要背压。
如果你使用副本,你就会有另一个级别的冗余。
仅当 Redis 没有足够的内存(或副本的足够网络带宽)来保存消息时才需要背压。
而且,老实说,我从未见过这种情况。
推荐阅读
- python - 如何在张量流中实现stdp?
- javascript - Firestore 过滤多个文档定价
- c++ - C++ 表达式:向量下标超出范围错误行:1733
- php - 我如何从 2019-03 年减去一个月
- java - 将数据从二维数组传递到 arrayList
- php - PHP 7.0 之前的后期静态绑定和 isset
- django - 如何不在`python manage.py test`上运行芹菜任务
- php - PHP Mockery部分测试双重不从父类调用方法
- sql-server - 从 macbook 连接到 Win 10 上的 Sql Server
- c# - C# Linq To SQL 填充 DataGrid 并将字段放入 TextBox