Как предотвратить поток памяти Redis увеличивается бесконечно? - PullRequest
0 голосов
/ 28 февраля 2020

Я только что понял, что XACK не удаляет сообщение автоматически, когда существует только одна группа потребителей.

Я думал, что когда все группы потребителей подтверждают одно и то же сообщение, сообщение будет удалено Redis-сервером, но Казалось, что это не так.

Итак, память потока Redis бесконечно увеличивается из-за того, что сообщения не будут удалены.

Может быть, единственный способ предотвратить это - сообщение XDEL вручную? Но как я могу узнать, что все группы потребителей получили сообщение?

Нужна помощь, спасибо!

1 Ответ

1 голос
/ 01 марта 2020

Потоки Redis - это, прежде всего, структура данных только для добавления. Все сообщения добавляются в поток на неопределенный срок, если пользователь явно не попросит их удалить, например, с помощью команды XDEL:

> XDEL mystream 1538561700640-0
(integer) 1

Также возможно ограничение размера для потоковой передачи максимального количества сообщений с помощью опции MAXLEN на XADD:

> XADD mystream MAXLEN 1000 * value 1
1526654998691-0
...
> XLEN mystream
(integer) 1000

Для просмотра списка ожидающих сообщений для каждой группы потребителей вы можете использовать XPENDING команда:

> XPENDING mystream mygroup
1) (integer) 1
2) 1526984818136-0
3) 1526984818136-0
4) 1) 1) "consumer-1"
      2) "1"
...