Разделение потоков Redis

#redis #partitioning #stackexchange.redis #redis-streams

Вопрос:

Я пытаюсь понять , как redis streams выполняет секционирование, если определенное сообщение может быть отправлено в определенный раздел (аналогично тому, как вы можете сделать с Кафкой).

Я проверил API redis-cli , и там нет ничего похожего на разделение , а также ничего об этом при использовании библиотеки StackExchangeRedis redis.

Единственный способ-это : IDatabase.StreamAdd(key,streamKey,streamValue,messageId)

Я что-нибудь упускаю ? Выполняется ли разделение только фиксированным способом ?

P. S Если разделение можно выполнить , можно ли составить ключ разделения ?

Комментарии:

1. redis.io/topics/streams-intro надеюсь, это может помочь. В нем также описаны различия между разделами Кафки и Редиса

2. Проверьте это redis.io/topics/.

Ответ №1:

Вы не можете создать раздел Кафки с помощью одного потока Redis. Группа потребителей Redis Stream выглядит как балансировщик нагрузки, который распределяет сообщения в потоке между разными потребителями без какого-либо разделения. Если один потребитель работает быстрее других, он будет потреблять больше сообщений, чем другие, независимо от логического раздела сообщений.

Если вы хотите создать раздел, вам необходимо использовать несколько потоков Redis, т. Е. Несколько ключей, и каждый ключ для другого раздела. И ваши производители добавляют сообщения в логическом разделе в выделенный поток Redis. Разные потребители читают сообщения с разных ключей.