Redis Mrange

Redis Mrange
Las estructuras de datos complejas utilizan diversos mecanismos de indexación. La mayoría de ellos usan índices numéricos. Los datos de la serie temporal son otra estructura de datos que utiliza una marca de tiempo como su índice. Varios escenarios del mundo real utilizan el almacenamiento de datos de la serie temporal para almacenar este tipo de datos.

Ejemplo: tasa de inflación durante un tiempo

Por lo general, las variaciones de la tasa de inflación para un período dado están representadas por los índices de marca de tiempo como se muestra en los siguientes. Varía con el tiempo.

Esta es una metodología de representación de datos muy útil en aplicaciones como el comercio de acciones, datos meteorológicos, carga de CPU durante un período, etc.

Redis y series de tiempo

Redis ha estado ofreciendo almacenamiento de datos de la serie temporal con conjuntos y flujos clasificados tradicionales. Ambas estructuras de datos no admitían consultas avanzadas de manipulación de datos. Pudieron recuperar los datos en función de un rango de marca de tiempo superior e inferior determinado. No hubo soporte para agregaciones, obteniendo datos para diferentes rangos de tiempo o muestreo descendente. Con la llegada de la API de los módulos Redis, se ha introducido una base de datos de la serie temporal con algunas características poderosas.

API de módulos Redis

Redis Core viene con numerosas características incorporadas. Aún así, la funcionalidad de Redis se puede extender con módulos externos. Estos módulos agregarían un nuevo conjunto de características y comandos al núcleo de Redis. Estas bibliotecas se pueden cargar para redis de dos maneras.

  1. Usando el Redis.archivo de configuración
  2. Usando el comando 'Módulo de carga'

1. El Redis.El archivo de configuración de conf se puede usar para cargar bibliotecas de terceros modificando la siguiente línea en la sección de módulos.

LoadModule/Path/to/redistimeseries.entonces

Las 'Redistimeseries.Entonces 'módulo se puede descargar desde el sitio web oficial de Redis. Además, debe reiniciar el servidor Redis.

2. El comando 'Módulo de carga' se puede usar para conectar un nuevo módulo al servidor Redis también. Este comando se puede usar en tiempo de ejecución.

Módulo de carga/ruta/a/mymodule.entonces

Luego puede enumerar la lista de módulos disponible como se muestra en la siguiente.

Lista de módulos

Producción:

Se enumera el módulo 'Timeseries', lo que significa que se ha conectado con éxito.

Módulo de réplica

El módulo 'Redistimeseries' implementa un almacén de datos de la serie temporal con un rico conjunto de comandos. Mantiene una lista doblemente vinculada en su núcleo que es liviano. Cada nodo de la lista vinculada consta de dos matrices correspondientes con un tamaño de 128 bits. Una matriz es almacenar las marcas de tiempo y la otra es para valores de muestra. La marca de tiempo y su valor juntos se denominan muestra.

El TS.Comando Mrange

Varios comandos están disponibles en la Biblioteca de las Eas de Redistimes para manipular filas de datos de series de tiempo. El 'ts.Mrange 'es uno de los comandos más populares que se utiliza para consultar una variedad de valores de datos. Es capaz de consultar valores de datos en múltiples series de tiempo, que es la versión avanzada del 'TS.Comando de rango. También proporciona características de agregación como AVG, primero, último, suma, recuento, etc.

El 'ts.El comando Mrange 'puede consultar el rango de la marca de tiempo 1 a la marca de tiempo N. Al mismo tiempo, puede obtener datos en las tres series de tiempo TS1, TS2 y TS3.

Sintaxis

TS.Mrange startingtimeStamp endtimestamp
[Filter_by_ts]
[Filter_by_value]
[Withlabels | Select_labels etiqueta1 etiqueta2…]
[Count RowCount]
[Agregador de agregación]
[Filtro de filtro]
[Etiqueta Groupby]

Los parámetros 'startingtimeStamp' y 'endtimeStamp' especifican el rango de los datos a consultar. Estos dos parámetros son obligatorios. Todos los demás parámetros son opcionales para el comando.

Ejemplo - Obtención de datos del mercado de valores

Supongamos una solicitud del mundo real en la que necesitamos almacenar los precios de venta por hora de pares de divisas muy negociados. La biblioteca de series de tiempo de Redis se puede utilizar para almacenar y manipular los datos de manera eficiente.

Usemos el 'TS.Crear 'comando para crear series de tiempo por par de divisas.

TS.Crear TS: EUR: USD Tipo de etiquetas "Forex"
TS.Crear TS: USD: Tipo de etiquetas CHF "Crypto"
TS.Crear TS: USD: JPY Etiquetas Tipo "Forex"

Hemos agregado una etiqueta llamada Tipo para cada una de las series de tiempo anteriores. A continuación, debemos agregar datos de muestra a la serie temporal anterior. El 'ts.Agregar 'El comando se puede usar.

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

Producción:

El '*'Comanda el servidor Redis para usar la hora del servidor actual como la marca de tiempo. Puede ver que el valor de la marca de tiempo ha sido devuelto por cada comando. Usemos el 'TS.Mrange 'Comando para consultar los datos en todas las series de tiempo' donde el tipo es 'forex' y las marcas de tiempo de inicio y finalización son 1655631860414, 1655631909914, respectivamente.

TS.Mrange 1655631860414 1655631909914 Tipo de filtro = "Forex"

Producción:

Como se esperaba, el 'TS.MRANGE 'Comando consulte las filas de datos en ambas series de tiempo TS: EUR: USD y TS: USD: JPY.

Vamos a buscar las filas de datos donde el tipo es cualquier cosa en 'forex' o 'crypto'. Las marcas de tiempo de inicio y finalización son las mismas que en el escenario anterior.

TS.Mrange 1655631860414 1655631909914 Tipo de filtro = (Forex, Crypto)

Producción:

Como puede ver, el comando ha obtenido datos de todas las series de tiempo que hemos creado anteriormente.

La bandera de 'Withlabels'

Podemos usar el parámetro opcional 'Withlabels' para mostrar las etiquetas en la salida.

TS.Mrange 1655631860414 1655631909914 Withlabels Filter Type = (Forex, Crypto)

Producción:

El indicador 'filtre_by_value'

Este indicador filtraría los resultados en función del rango de valores especificados. Puede especificar un valor mínimo y máximo para este indicador.

TS.Mrange - + filtre_by_value 370 490.2 Tipo de filtro = (Forex, Crypto)

Puede usar los símbolos '-' y '+' para indicar las marcas de tiempo mínimas y máximas posibles. En este ejemplo, el parámetro 'filtre_by_value' toma valores 370 y 490.2 que le ordena al servidor Redis para consultar los datos de la serie temporal donde los valores se encuentran dentro del rango especificado.

Producción:

El indicador 'filter_by_ts'

Puede filtrar los resultados por el valor exacto de su marca de tiempo como se muestra en lo siguiente.

TS.Mrange - + filtre_by_ts 1655631873854 Tipo de filtro = Crypto

En este caso, hemos especificado el valor de la marca de tiempo como 1655631873854.
Esto filtraría los datos resultantes como se muestra en lo siguiente.

Conclusión

Redis ofrece capacidades de bases de datos de series de tiempo a través de su API de módulo externo. El 'TimeseriesModule' se puede conectar a la tienda Redis habitual utilizando un archivo de configuración o comando de tiempo de ejecución. Los datos de la serie de tiempo se pueden almacenar en 128 bits de fragmentos. El 'ts.El comando Mrange 'se utiliza para consultar datos en múltiples series de tiempo. Es la versión avanzada del 'TS.RANGO'. Este comando ofrece varias características, como agregaciones, agrupación, filtrado, etc.