Redis团队为Redis 5.0引入了新的Streams数据类型。由于Streams从第一眼看上去就像是Kafka主题,因此找到使用它的真实示例似乎很奇怪。
在streams intro中,我们与Kafka流进行了比较:
我们与Kafka,RabbitMq和NATS有一些项目。现在,我们深入研究Redis流,以尝试将其用作“ pre kafka缓存”,并在某些情况下用作Kafka / NATS替代方案。现在最关键的一点是复制:
还有上限策略。 Redis Streams真正的“上限资源”是内存,因此要存储多少项或使用哪种上限策略并不重要。因此,每当您的使用者失败时,您都会获得峰值内存消耗或消息丢失(上限)。
我们使用Kafka作为RTB投标者前端,它每秒处理约1,100,000条消息,有效载荷约为120个字节。使用Redis,我们在写入时消耗〜170 mb / sec的内存,而使用512 gb RAM服务器,我们可以写入“保留”以存储约50分钟的数据。因此,如果这次处理系统将脱机,我们将崩溃。
能否请您进一步介绍Redis Streams在现实世界中的使用情况,并且某些情况下您可能会尝试自己使用它?还是Redis Streams可以用于不大量数据?
答案 0 :(得分:3)
好久不见了。感觉就像是属于redis-db邮件列表的讨论,但用例听起来很有趣。
请注意,Redis Streams不能替代Kafka,尽管有相似之处,但它们提供了不同的属性和功能。对于复制的异步性质,您当然是正确的。至于扩展可用的RAM量,您应该考虑使用群集,并在基于句点的键名之间划分流。