Redis MRANGE

Redis MRANGE
Estruturas de dados complexas usam vários mecanismos de indexação. A maioria deles usa índices numéricos. Os dados da série temporal são outra estrutura de dados que usa um registro de data e hora como seu índice. Vários cenários do mundo real usam o armazenamento de dados da série Tempo para armazenar esse tipo de dados.

Exemplo - taxa de inflação ao longo de um tempo

Geralmente, as variações da taxa de inflação para um determinado período são representadas pelos índices de registro de data e hora, como mostrado no seguinte. Varia com o tempo.

Esta é uma metodologia de representação de dados muito útil em aplicativos como negociação de ações, dados meteorológicos, carga da CPU por um período, etc.

Redis e série temporal

Redis oferece armazenamento de dados de séries temporais com conjuntos e fluxos tradicionais classificados. Ambas as estruturas de dados não suportam consultas avançadas de manipulação de dados. Eles só conseguiram recuperar os dados com base em uma determinada faixa de registro de data e hora superior e inferior. Não houve suporte para agregações, buscando dados para diferentes intervalos de tempo ou desmotamento. Com a chegada da API Redis Modules, um banco de dados de séries temporais foi introduzido com alguns recursos poderosos.

Redis Módulos API

Redis Core vem com vários recursos embutidos. Ainda assim, a funcionalidade Redis pode ser estendida com módulos externos. Esses módulos adicionariam um novo conjunto de recursos e comandos ao Redis Core. Essas bibliotecas podem ser carregadas para redis em duas maneiras.

  1. Usando o redis.Configuration Arquivo de Configuração
  2. Usando o comando 'Load Module'

1. Os redis.O arquivo de configuração do confing.

LoadModule/Path/to/RedistiMeRies.então

O 'REDISTIMESSERIES.Portanto, o módulo pode ser baixado do site oficial do Redis. Além disso, você precisa reiniciar o servidor Redis.

2. O comando 'Module Load' pode ser usado para conectar um novo módulo ao servidor Redis também. Este comando pode ser usado em tempo de execução.

Módulo Carga/Path/To/MyModule.então

Em seguida, você pode listar a lista de módulos disponíveis, conforme mostrado no seguinte.

Lista de módulos

Saída:

O módulo 'timeSeries' está listado, o que significa que foi conectado com sucesso.

Módulo RedistiMeRies

O módulo 'RedistimeSeries' implementa um armazenamento de dados de séries temporais com um rico conjunto de comandos. Ele mantém uma lista duplamente ligada em sua essência que é leve. Cada nó da lista vinculada consiste em duas matrizes correspondentes com um tamanho de 128 bits. Uma matriz é armazenar os registros de data e hora e o outro é para valores de amostra. O registro de data e hora e seu valor juntos são chamados de amostra.

Os ts.Comando MRANGE

Vários comandos estão disponíveis na Biblioteca RedistiMeries para manipular as linhas de dados da série temporal. Os 'ts.Mrange 'é um dos comandos mais populares que são usados ​​para consultar uma variedade de valores de dados. É capaz de consultar valores de dados em várias séries temporais, que é a versão avançada do 'TS.Comando 'Range'. Ele também fornece recursos de agregação como AVG, primeiro, último, soma, contagem, etc.

Os 'ts.O comando de Mrange pode consultar o intervalo de registro de data e hora a registro de data e hora n. Ao mesmo tempo, pode buscar dados nos três três séries tempos TS1, TS2 e TS3.

Sintaxe

Ts.MRANGE STEITETIMESTAMP ENDTIMESTAMP
[FILTER_BY_TS]
[FILTER_BY_VALUE]
[WithLabels | Selected_labels Label1 Label2…]
[Conde Rowcount]
[Agregador de agregação]
[Filtro filtro]
[Rótulo do grupo]

Os parâmetros 'StartingTimestamp' e 'Endtimestamp' especificam o intervalo dos dados a serem consultados. Esses dois parâmetros são obrigatórios. Todos os outros parâmetros são opcionais para o comando.

Exemplo - buscar dados do mercado de ações

Vamos supor um aplicativo do mundo real, onde precisamos armazenar os preços de venda por hora de pares de moedas fortemente negociados. A biblioteca de séries temporais Redis pode ser usada para armazenar e manipular os dados com eficiência.

Vamos usar o 'TS.Crie 'comando' para criar séries temporais por par de moeda.

ts.Crie TS: EUR: Tipo de etiquetas de USD "Forex"
ts.Crie TS: USD: CHF Rótulos tipo "criptografia"
ts.Crie TS: USD: JPY Rótulos tipo "forex"

Adicionamos um rótulo chamado tipo para cada uma das séries temporais acima. Em seguida, devemos adicionar dados de amostra à série temporal acima. Os 'ts.Comando add 'pode ser usado.

ts.Adicionar TS: EUR: USD * 350
ts.Adicionar TS: USD: CHF * 390
ts.Adicionar TS: USD: JPY * 490
ts.Adicionar TS: EUR: USD * 350.3
ts.Adicionar TS: USD: CHF * 390.6
ts.Adicionar TS: USD: JPY * 490.4

Saída:

O '*'Comanda o servidor Redis para usar o horário do servidor atual como o registro de data e hora. Você pode ver o valor do registro de data e hora foi retornado por cada comando. Vamos usar o 'TS.MRANGE 'Comando para consultar os dados em todas as séries temporais' onde o tipo é 'forex' e os registros de data e hora de partida e final são 1655631860414, 1655631909914, respectivamente.

ts.MRANGE 1655631860414 1655631909914 TIPO DE FILTRO = "forex"

Saída:

Como esperado, o TS.O comando do MRANGE 'consultou linhas de dados em ambas as séries temporais TS: EUR: USD e TS: USD: JPY.

Vamos buscar as linhas de dados onde o tipo é qualquer coisa no 'forex' ou 'criptografia'. Os registros de data e hora de partida e final são os mesmos do cenário anterior.

ts.MRANGE 1655631860414 1655631909914 Tipo de filtro = (forex, criptografia)

Saída:

Como você pode ver, o comando buscou dados de todas as séries temporais que criamos anteriormente.

A bandeira 'WithLabels'

Podemos usar o parâmetro opcional 'WithLabels' para mostrar os rótulos na saída.

ts.MRANGE 1655631860414 1655631909914 TIPO DE FILTRO DE WITHLABELS = (Forex, Crypto)

Saída:

A bandeira 'filtro_by_value'

Esta bandeira filtrava os resultados com base no intervalo de valores especificados. Você pode especificar um valor mínimo e máximo para esta bandeira.

ts.MRANGE - + FILTER_BY_VALUE 370 490.2 tipo de filtro = (forex, cripto)

Você pode usar os símbolos '-' e '+' para indicar o mínimo e o máximo possível de data e hora. Neste exemplo, o parâmetro 'filter_by_value' leva os valores 370 e 490.2 que comanda o servidor Redis para consultar os dados da série temporal, onde os valores estão dentro do intervalo especificado.

Saída:

A bandeira 'filtro_by_ts'

Você pode filtrar os resultados pelo valor exato de timestamp, como mostrado no seguinte.

ts.mRange - + filtro_by_ts 1655631873854 Tipo de filtro = criptografia

Nesse caso, especificamos o valor de carimbo de data e hora como 1655631873854.
Isso filtraria os dados resultantes, como mostrado no seguinte.

Conclusão

Redis oferece recursos de banco de dados de séries temporais através de sua API de módulo externo. O 'timeSeriesmodule' pode ser conectado à loja Redis usual usando um arquivo de configuração ou comando de tempo de execução. Os dados da série temporal podem ser armazenados em 128 bits de pedaços. Os 'ts.O comando de Mrange é usado para consultar dados em várias séries temporais. É a versão avançada dos 'ts.FAIXA'. Este comando oferece vários recursos, como agregações, agrupamento, filtragem, etc.