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 流中。不同的消费者从不同的密钥读取消息。
我正在尝试了解 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 流中。不同的消费者从不同的密钥读取消息。