Redis XGroup

Redis XGroup
Redis Streams foram introduzidos na versão 5.0 que representa uma estrutura de dados de log apenas de anexo tradicional. Os fluxos Redis são mais avançados do que um log usual, onde suporta grupos de consumidores e acesso mais rápido aos elementos do fluxo.

Os fluxos permitem que o mesmo fluxo seja consumido por diferentes consumidores usando o comando xread. Com isso, as mesmas mensagens serão enviadas para vários clientes. Em alguns casos, precisamos empurrar um subconjunto diferente de mensagens do mesmo fluxo para vários consumidores. O conceito de grupos de consumidores foi implementado com fluxos Redis para apoiar isso na ilustração a seguir.

Como mostrado na ilustração acima, os três consumidores Consumer1, Consumer2 e Consumer3 estão consumindo entradas diferentes do fluxo Usuário. Cada um desses consumidores faz parte do grupo de consumidores 1. Sendo membro do 'Consumidor, o Grupo 1' garante os seguintes fatos:

  • Cada entrada será consumida por um consumidor diferente de três consumidores em um determinado momento. Nenhuma entrada é consumida por dois ou mais consumidores de uma só vez.
  • É necessário um reconhecimento explícito para notificar que as mensagens empurradas foram adequadamente consumidas por um consumidor.
  • O Consumer Group 1 detém o último ID de entrada entregue e sempre que um consumidor solicita novas mensagens, ele fornece apenas as mensagens mais recentes.
  • Sempre que um consumidor consulta a história das entradas pertencentes a um determinado fluxo, ele só mostrará as mensagens que são entregues a esse consumidor em particular.
    • Consumidor 2 só vê Query2: msg2 e Query5: Msg5 entradas como a história de mensagens pertencentes ao 'Usuário'

O comando xgroup

O XGroup é o comando de contêiner para gerenciar os grupos de consumidores associados aos fluxos Redis. Consiste em vários subcomandos importantes para criar/excluir grupos de consumidores e criar/excluir consumidores pertencentes a um grupo. A sintaxe básica do comando XGroup é a seguinte:

XGROUP [[valor] [Opções]…]

: O nome do subcomando para operações como a criação e exclusão de consumidores e grupos de consumidores.

: Os argumentos de subcomando, se disponível.

[valor]: Se um argumento aceitar um valor, pode ser especificado. É opcional e permitido apenas para certos comandos.

O resultado retornado variará com base no subcomando especificado.

Os subcomandos XGroup

Vários subcomandos estão disponíveis para uso com o comando xgroup. Há um subcomando especial chamado 'ajuda' que exibe todos os subcomandos disponíveis para uso.

XGroup Ajuda

O ajuda Subcomando retorna uma variedade de subcompâncias com suas descrições.

CRIAR
O CRIAR Subcomando pode ser usado para criar um novo grupo de consumidores para um determinado fluxo. A sintaxe é a seguinte:

XGroup Create stream_key group_name Entry_id | $ [MkStream] [EntriesRead Entries_read]

Isso criará um novo grupo de consumidores identificado pelo 'group_name' associado ao dado 'stream_key '. O 'MkStream' A opção cria um novo fluxo com o comprimento de 0 se o fluxo especificado não existir no DataStore Redis.

CreateConsumer
Quando você precisa criar um consumidor para um determinado grupo, o subcomando do createConsumer pode ser usado. Ele aceita apenas a chave do fluxo, o nome do grupo de consumidores e um nome de consumidor único como argumentos.

XGROUP CreateConsumer stream_key group_name Consumer_name

Delconsumer
Um consumidor criado pode ser excluído usando o subcomando DelConsumer com o comando XGroup. A sintaxe Subcomando de DelConsumer é a seguinte:

XGroup delconsumer stream_key group_name Consumer_name

Observe que antes de excluir um consumidor do grupo de consumidores é reivindicar ou reconhecer todas as mensagens pendentes associadas ao consumidor. Este comando retornará o número de mensagens pendentes associadas ao consumidor excluído.

DESTRUIR
Sempre que você precisar excluir um grupo de consumidores com todos os consumidores e mensagens pendentes, o subcomando de destruição pode ser usado. Então, é recomendável usar este comando com cuidado.

XGroup Destroy stream_key Group_name

Este comando retornará um número inteiro 0 ou 1, que é a contagem dos grupos de consumidores excluídos.

Setid
O subcomando SetId permite modificar o último valor de identificação entregue. Sempre que você precisar processar todas as entradas do fluxo, o último ID entregue deve ser definido como 0 usando o subcomando SetId.

XGROUP SETID STREAM_KEY GROUP_NAME ENTRADE_ID | $ [EntriesRead Entries_read]

Se o último ID entregue foi definido corretamente, o comando retornará uma string simples OK.

Conclusão

O comando Xgroup Container é usado para gerenciar os grupos de consumidores associados a um determinado fluxo. O especial AJUDA O comando pode ser usado para exibir todos os subcomandos disponíveis para o comando xgroup. Criação e exclusão de consumidores e grupos de consumidores podem ser feitos usando os subcomando mencionados. Além disso, o subcomando SetId suporta a atualização do último ID entregue de um determinado grupo de consumidores. No geral, a saída do comando xgroup varia com o subcomando sendo usado.