Redis 流分区

Redis Streams Partitioning

我正在尝试了解 redis 流如何进行分区,是否可以将特定消息发送到特定分区(类似于您对 Kafka 的处理方式)。

我检查了 redis-cli api,没有类似分区的东西,使用 StackExchangeRedis redis 库时也没有。

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

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

P.S如果可以分区,是否可以组成分区键?

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

如果要做partition,就得用多个Redis Streams,也就是多个key,每个key对应不同的partition。您的生产者将逻辑分区中的消息添加到专用的 Redis 流中。不同的消费者从不同的密钥读取消息。