Есть ли способ подписаться на Redis Streams, аналогичный Redis pub/sub?

Я создаю конвейер данных, который читает двоичные журналы MySQL в реальном времени, используя Maxwell Daemon, а Maxwell Daemon отправляет данные в потоки Redis. Я создал клиент, который потребляет данные из потоков Redis, обрабатывает их. В настоящее время я опрашиваю XREAD, используя бесконечный цикл со временем ожидания в несколько миллисекунд, чтобы потреблять данные из потока, но я считаю это неэффективным решением.

Я искал способ, где я могу каким-то образом подписаться на поток Redis и получать уведомления всякий раз, когда в поток добавляются новые записи, и столкнулся с этой проблемой GitHub, где они говорят об использовании Redis pub/sub вместе с потоками для достижения этой функциональности.

Есть ли более эффективный способ построения этой системы?

1 ответ

Да, используйте BLOCK аргумент XREAD и у вас будет такая же "эффективность".

Документация: https://redis.io/commands/xread и https://redis.io/topics/streams-intro.

Другие вопросы по тегам