Streaming de dados com redis
No mundo moderno, os dados são gerados continuamente a partir de plataformas de mídia social, sites e dispositivos de IoT. Portanto, o streaming de dados é imparável. Um fluxo pode ser identificado como uma série de eventos gerados a partir de várias fontes simultâneas. Por exemplo, uma estação meteorológica gera dados meteorológicos em um determinado local a cada hora. Cada evento consiste em dados climáticos, como temperatura, umidade, velocidade do vento e direção.
Redis Streams ajudam a capturar, gerenciar e entender essa grande quantidade de dados transmitidos.
Geralmente, as fontes que geram dados ou escrevem para um fluxo são chamadas de produtores. Cada produtor adiciona uma nova entrada ao Redis Stream com um ID de evento exclusivo, onde um evento consiste em um ou mais pares de valor de campo semelhantes a um hash Redis. Por outro lado, os consumidores estão lendo o fluxo para gerar algumas idéias significativas. Os produtores e consumidores não precisam saber sobre os detalhes da implementação um do outro, tornando os fluxos Redis mais robustos.
Entradas de fluxo Redis e macro nós
Redis Stream Type é baseado em estruturas de dados de radix-árvore amplamente usadas. Geralmente, uma árvore radix consiste em vários nós macro, onde um nó macro pode armazenar várias entradas de fluxo. Como a árvore Radix é uma árvore de prefixo otimizada pela memória, os riachos Redis podem ser usados com baixo consumo de memória. Além disso, as árvores de radix subjacentes permitem que os fluxos acessem dados aleatoriamente ou dentro de um intervalo especificado em maior eficiência.
O comando xadd adiciona uma nova entrada a um nó macro no fluxo. Quando você adiciona uma entrada, é imutável. Portanto, é chamado de estrutura de dados somente de anexo.
O comando xdel
Em alguns casos, manter milhões de dados históricos do fluxo pode não valer a pena devido a expiração de dados. Portanto, os fluxos Redis suportam a exclusão das entradas da estrutura de dados e liberam alguma memória. Podemos usar o comando xdel para excluir uma entrada de um fluxo especificado.
Sintaxe:
Xdel[Entry_id…]
O comando XDEL aceita múltiplas entradas. Portanto, você pode excluir várias entradas por comando. Este comando retorna a contagem das entradas de fluxo excluído. Sempre que a entrada dada não existe em um fluxo, a contagem retornada é menor que a contagem de identificação especificada.
Mecanismo de exclusão de entrada do fluxo Redis
O comando xdel não despeja as entradas do fluxo imediatamente. Em vez disso, marca a entrada como excluída primeiro. Portanto, a entrada do fluxo continuará utilizando a memória alocada. A memória será liberada quando todas as entradas pertencentes a um nó macro tiverem sido marcadas. Forçaria o servidor Redis a liberar a memória para esse nó macro.
Exemplo 1: Exclua a entrada de dados climáticos antigos de um fluxo
Vamos primeiro criar um fluxo para armazenar dados meteorológicos na cidade de San-Francisco usando o comando xadd. Suponha que os sensores produzam dados diariamente ao meio -dia. Portanto, estaremos adicionando dados por três dias neste exemplo.
Xadd Sanfranciscoweather * Temp 18.4 vento 12 umidade 67
XADD Sanfranciscoweather * Temp 12.6 vento 5 umidade 34
XADD Sanfranciscoweather * Temp 5 Vento 1 Horda 23
Vamos supor que a primeira entrada seja do último mês e não precisamos acompanhar os dados do mês anterior.
Portanto, podemos usar o comando xdel para excluir a primeira entrada com o ID 1656493771190-0.
XDEL SANFRANCISCOWEATHEATH 1656493771190-0
O comando xdel retornou o número inteiro 1, o que significa que apenas uma entrada foi excluída do fluxo.
Vamos usar o comando xRange para ler o fluxo e verificar se a entrada de ID 1656493771190-0 foi marcada como excluído.
XRANGE SANFRANCISCOWEATHEATH - +
Como esperado, apenas as duas últimas entradas estão disponíveis e a primeira entrada foi excluída.
Exemplo 2: Exclua várias entradas climáticas de um fluxo
Digamos que devemos excluir várias entradas de um fluxo simultaneamente. O comando xdel suporta. Você pode especificar os IDs de entrada como mostrado no seguinte.
Excluiremos as duas entradas restantes do fluxo Sanfranciscoweather que criamos no exemplo anterior. 1656493789125-0 e 1656493802770-0 são os IDs das duas entradas restantes.
XDEL Sanfranciscoweather 1656493789125-0 1656493802770-0
Como esperado, o valor de retorno do comando é 2, que indica que duas entradas foram excluídas.
Vamos ler o fluxo
O fluxo de Sanfranciscoweather está vazio.
Conclusão
Redis Streams podem ser identificados como uma série de eventos produzidos por fontes simultâneas. Um fluxo pode conter várias entradas em que cada entrada tem um ID exclusivo e consiste em pares de valor de campo. Os fluxos Redis são baseados na estrutura de dados da árvore Radix, tornando-os altamente eficientes e otimizados para a memória. As entradas adicionadas a um fluxo podem ser excluídas usando o comando redis xdel. Este comando marca a entrada como excluída em vez de despejar a entrada e liberar memória. Ele recupera a memória quando todas as entradas de um nó macro são marcadas como excluídas.