1

我试图了解 redis 流如何进行分区,如果可以将特定消息发送到特定分区(类似于使用 Kafka 的方式)。

我检查了 redis-cli api ,没有什么类似于 partitioning ,在使用StackExchangeRedisredis 库时也没有。

唯一的方法是:IDatabase.StreamAdd(key,streamKey,streamValue,messageId)

我错过了什么吗?分区是否仅以固定方式完成?

PS如果可以分区,可以组成分区键吗?

4

1 回答 1

4

您无法使用单个 Redis Stream 实现 Kafka 分区。Redis Stream 的消费者组看起来像一个负载均衡器,它将流中的消息分发给不同的消费者,没有任何分区。如果一个消费者比其他消费者快,它将比其他消费者消费更多的消息,而不管消息的逻辑分区如何。

如果要进行分区,则必须使用多个Redis Stream,即多个key,并且每个key用于不同的分区。您的生产者将逻辑分区中的消息添加到专用的 Redis 流。不同的消费者从不同的键读取消息。

于 2021-10-08T01:14:46.470 回答