XINFO
XINFO GROUPS
XINFO GROUPS key
- Доступно с версии:
- 5.0.0
- Сложность по времени:
- O(1)
- Категории ACL:
-
@read,@stream,@slow,
Эта команда возвращает список всех групп потребителей потока, хранящегося по адресу <key>.
По умолчанию, для каждой группы предоставляется следующая информация:
- name: имя группы потребителей
- consumers: количество потребителей в группе
- pending: длина списка ожидающих записей группы (PEL), которые были доставлены, но еще не подтверждены
- last-delivered-id: идентификатор последней записи, доставленной потребителям группы
- entries-read: логический «счётчик чтения» последней записи, доставленной потребителям группы
- lag: количество записей в потоке, которые всё ещё ожидают доставки потребителям группы, или NULL, если это число определить невозможно.
Задержка группы потребителей
Задержка заданной группы потребителей — это количество записей в диапазоне между entries_read группы и entries_added потока. Иными словами, это количество записей, которые ещё предстоит доставить потребителям группы.
Значения и тенденции этого показателя полезны для принятия решений по масштабированию группы потребителей. Высокие значения задержки можно устранить, добавив больше потребителей в группу, в то время как низкие значения могут указывать на возможность уменьшения группы потребителей.
Redis отслеживает задержку группы потребителей, используя два счётчика: количество всех добавленных записей в поток и количество логических чтений, выполненных группой потребителей. Задержка — это разница между этими двумя значениями.
Счётчик потока (поле entries_added команды XINFO STREAM) увеличивается на единицу при каждом вызове XADD и учитывает все записи, добавленные в поток за его время существования.
Счётчик группы потребителей, entries_read, — это логический счётчик записей, которые группа прочитала. Важно отметить, что этот счётчик является лишь эвристическим, а не точным, и поэтому используется термин «логический». Счётчик пытается отразить количество записей, которые группа должна была прочитать, чтобы достичь своего текущего last-delivered-id. Счётчик entries_read является точным только в идеальном мире, где группа потребителей начинает с первой записи потока и обрабатывает все его записи (т. е. никакие записи не удаляются до обработки).
Существует два особых случая, в которых этот механизм не может сообщить задержку:
- Группа потребителей создана или настроена с произвольным идентификатором последней доставленной записи (команды
XGROUP CREATEиXGROUP SETIDсоответственно). Произвольным идентификатором является любой идентификатор, который не является идентификатором первой, последней записи потока или нулевой записи ("0-0"). - Одна или несколько записей между
last-delivered-idгруппы иlast-generated-idпотока были удалены (с помощьюXDELили операции обрезки).
В обоих случаях счётчик чтения группы считается недействительным, и возвращаемое значение устанавливается в NULL, чтобы указать, что задержка в настоящее время недоступна.
Однако задержка недоступна только временно. Она восстанавливается автоматически во время нормальной работы, поскольку потребители продолжают обрабатывать сообщения. Как только группа потребителей доставит последнее сообщение в поток своим членам, она будет настроена с правильным логическим счётчиком чтения, и отслеживание задержки можно будет продолжить.
@reply
Массив ответов: список групп потребителей.
Примеры
> XINFO GROUPS mystream
1) 1) "name"
2) "mygroup"
3) "consumers"
4) (integer) 2
5) "pending"
6) (integer) 2
7) "last-delivered-id"
8) "1638126030001-0"
9) "entries-read"
10) (integer) 2
11) "lag"
12) (integer) 0
2) 1) "name"
2) "some-other-group"
3) "consumers"
4) (integer) 1
5) "pending"
6) (integer) 0
7) "last-delivered-id"
8) "1638126028070-0"
9) "entries-read"
10) (integer) 1
11) "lag"
12) (integer) 1
История
- Начиная с версии Redis 7.0.0: добавлены поля
entries-readиlag
© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/xinfo-groups/