Redis 流分区

Ber*_*ian 2 partitioning redis stackexchange.redis redis-streams

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

我检查了redis-cli api,没有任何类似于分区的内容,在使用StackExchangeRedisredis库时也没有类似的内容。

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

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

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

for*_*ack 6

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

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