我正在尝试理解redis streams如何进行分区,如果可以将特定的消息发送到特定的分区(类似于使用Kafka的方式)。
我已经检查了redis-cli api,没有类似于分区的东西,在使用StackExchangeRedis redis库时也没有这方面的东西。
唯一的方法是:IDatabase.StreamAdd(key,streamKey,streamValue,messageId)
我错过了什么吗?分区是否只以固定的方式进行?
P.S如果可以进行分区,那么可以编写分区键吗?
发布于 2021-10-08 01:14:46
单个Redis流无法实现Kafka分区。Redis stream的消费者组看起来像一个负载均衡器,它将流中的消息分发给不同的消费者,而不需要任何分区。如果一个消费者比其他消费者更快,它将比其他消费者消耗更多的消息,而不考虑消息的逻辑分区。
如果你想做分区,你必须使用多个Redis流,即多个key,每个key对应一个不同的分区。您的生产者将逻辑分区中的消息添加到专用Redis Stream中。不同的消费者从不同的密钥中读取消息。
https://stackoverflow.com/questions/69481061
复制相似问题