Redis Mrange

Redis Mrange
Les structures de données complexes utilisent divers mécanismes d'indexation. La plupart d'entre eux utilisent des index numériques. Les données de séries chronologiques sont une autre structure de données qui utilise un horodat comme son index. Plusieurs scénarios du monde réel utilisent le stockage de données de séries chronologiques pour stocker ce type de données.

Exemple - Taux d'inflation pendant un certain temps

Habituellement, les variations de taux d'inflation pour une période donnée sont représentées par les indices d'horodatage comme indiqué dans les éléments suivants. Ça varie avec le temps.

Il s'agit d'une méthodologie de représentation des données très utile dans des applications telles que le trading d'actions, les données météorologiques, la charge du processeur sur une période, etc.

Redis et séries chronologiques

Redis propose un stockage de données de séries chronologiques avec des ensembles et des flux triés traditionnels. Ces deux structures de données ne prenaient pas en charge les requêtes avancées de manipulation de données. Ils étaient juste en mesure de récupérer les données en fonction d'une plage d'horodatage supérieure et inférieure donnée. Il n'y avait pas de support pour les agrégations, la récupération de données pour différentes gammes de temps ou les réductions d'échantillonnage. Avec l'arrivée de l'API Redis Modules, une base de données de séries chronologiques a été introduite avec des fonctionnalités puissantes.

API de modules redis

Redis Core est livré avec de nombreuses fonctionnalités dans construites. Pourtant, la fonctionnalité redis peut être étendue avec des modules externes. Ces modules ajouteraient un nouvel ensemble de fonctionnalités et des commandes au noyau redis. Ces bibliothèques peuvent être chargées pour redis en deux manières.

  1. En utilisant le redis.Fichier de configuration Conf
  2. Utilisation de la commande «Module Load»

1. Le redis.Le fichier de configuration Conf peut être utilisé pour charger des bibliothèques tierces en modifiant la ligne suivante dans la section des modules.

module de chargement / chemin / vers / redistimeseries.donc

Les «redistimeseries.Ainsi, le module peut être téléchargé à partir du site officiel de Redis. De plus, vous devez redémarrer le serveur Redis.

2. La commande «Module Load» peut également être utilisée pour brancher un nouveau module sur le serveur Redis. Cette commande peut être utilisée à l'exécution.

Charge de module / chemin / vers / mymodule.donc

Ensuite, vous pouvez répertorier la liste des modules disponibles comme indiqué dans ce qui suit.

Liste de modules

Sortir:

Le module «TimesSeries» est répertorié, ce qui signifie qu'il a été branché avec succès.

Module de redistimeseries

Le module «RedistimeSeries» implémente une boutique de données de série temporelle avec un riche ensemble de commandes. Il maintient une liste à double liaison dans son cœur qui est légère. Chaque nœud de la liste liée se compose de deux tableaux correspondants avec une taille de 128 bits. Un tableau consiste à stocker les horodatages et l'autre est destiné aux valeurs de l'échantillon. L'horodatage et sa valeur ensemble sont appelés un échantillon.

Le TS.Commande Mrange

Plusieurs commandes sont disponibles dans la bibliothèque RedistimeSeries pour manipuler les lignes de données de séries chronologiques. Le 'TS.Mrange 'est l'une des commandes les plus populaires utilisées pour interroger une gamme de valeurs de données. Il est capable d'interroger les valeurs de données sur plusieurs séries chronologiques, qui est la version avancée du 'TS.Commande de gamme. Il fournit également des fonctionnalités d'agrégation telles que AVG, d'abord, dernier, somme, comptage, etc.

Le 'TS.La commande MRange peut interroger la plage de l'horodatage 1 à l'horodatage n. Dans le même temps, il peut récupérer des données sur les trois séries temporelles TS1, TS2 et TS3.

Syntaxe

Ts.Mrange startetimestamp endtimestamp
[Filter_by_ts]
[Filter_by_value]
[WithLabels | SELECT_LABELS Label1 Label2…]
[Count RowCount]
[Agrégatrice d'agrégation]
[Filtre filtre]
[Label Groupby]

Les paramètres «StarteTimestamp» et «Endtimestamp» spécifient la plage des données à interroger. Ces deux paramètres sont obligatoires. Tous les autres paramètres sont facultatifs à la commande.

Exemple - Récupération des données boursières

Supposons une application réelle où nous devons stocker les prix de vente horaires des paires de devises fortement échangées. La bibliothèque de séries chronologiques Redis peut être utilisée pour stocker et manipuler efficacement les données.

Utilisons le 'TS.Créer une commande pour créer des séries chronologiques par paire de devises.

ts.Créer TS: EUR: Étiquettes USD Type "Forex"
ts.Créer TS: USD: Étiquettes CHF Type "Crypto"
ts.Créer TS: USD: JPY Labels Type "Forex"

Nous avons ajouté une étiquette appelée type pour chacune des séries chronologiques ci-dessus. Ensuite, nous devons ajouter des exemples de données à la série chronologique ci-dessus. Le 'TS.Ajouter la commande peut être utilisée.

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

Sortir:

Le '*'Commande le serveur redis pour utiliser le temps du serveur actuel comme horodatage. Vous pouvez voir que la valeur horodato a été renvoyée par chaque commande. Utilisons le 'TS.MRANGE 'Commande pour interroger les données sur toutes les séries chronologiques' où le type est 'Forex' et les horodat de début et de fin sont 1655631860414, 1655631909914, respectivement.

ts.MRANGE 1655631860414 1655631909914 Filtre Type = "Forex"

Sortir:

Comme prévu, le 'TS.MRANGE 'Command a interrogé des lignes de données sur les deux séries chronologiques TS: EUR: USD et TS: USD: JPY.

Reprenons les lignes de données où le type est quelque chose dans le «Forex» ou la «crypto». Les horodat de début et de fin sont les mêmes que dans le scénario précédent.

ts.MRange 1655631860414 1655631909914 Type de filtre = (Forex, crypto)

Sortir:

Comme vous pouvez le voir, la commande a récupéré les données de toutes les séries chronologiques que nous avons créées précédemment.

Le drapeau «withlabels»

Nous pouvons utiliser le paramètre facultatif «WithAllabels» pour afficher les étiquettes de la sortie.

ts.MRange 1655631860414 1655631909914 Withlabels Filter Type = (Forex, Crypto)

Sortir:

Le drapeau «filter_by_value»

Ce drapeau filtrerait les résultats en fonction de la plage de valeurs spécifiées. Vous pouvez spécifier une valeur minimale et maximale pour ce drapeau.

ts.Mrange - + filter_by_value 370 490.2 Type de filtre = (Forex, crypto)

Vous pouvez utiliser les symboles '-' et '+' pour indiquer les horodatages minimum et maximum possibles. Dans cet exemple, le paramètre «filter_by_value» prend les valeurs 370 et 490.2 qui commande le serveur Redis pour interroger les données de séries chronologiques où les valeurs se trouvent dans la plage spécifiée.

Sortir:

Le drapeau 'Filter_By_ts'

Vous pouvez filtrer les résultats par leur valeur horodatrice exacte comme indiqué dans ce qui suit.

ts.Mrange - + filter_by_ts 1655631873854 Type de filtre = crypto

Dans ce cas, nous avons spécifié la valeur de l'horodatage comme 1655631873854.
Cela filtrerait les données résultantes comme indiqué dans ce qui suit.

Conclusion

Redis propose des capacités de base de données de séries chronologiques via son API de module externe. Le «TimesSeriesModule» peut être branché sur le magasin Redis habituel à l'aide d'un fichier de configuration ou d'une commande d'exécution. Les données de séries chronologiques peuvent être stockées en 128 bits de morceaux. Le 'TS.La commande MRange 'est utilisée pour interroger les données sur plusieurs séries chronologiques. C'est la version avancée du 'TS.GAMME'. Cette commande propose plusieurs fonctionnalités telles que les agrégations, le regroupement, le filtrage, etc.