TairTS est une structure de données de séries temporelles conçue sous forme de module Redis. Elle offre un accès en mémoire en lecture et écriture à faible latence et haute concurrence, prend en charge le filtrage rapide et les requêtes d'agrégation, et gère à la fois le stockage et le traitement des données de séries temporelles.
Concepts clés
TairTS organise les données selon une hiérarchie à trois niveaux :
Pkey : conteneur nommé regroupant un ensemble de chronologies associées (skeys). Chaque pkey peut contenir plusieurs skeys.
Skey : chronologie unique au sein d'un pkey. Un skey est composé de plusieurs chunks de capacité fixe et peut comporter un ou plusieurs labels pour le filtrage.
-
Chunk : unité de stockage des données au sein d'un skey. Chaque chunk stocke plusieurs points de données.
La capacité par défaut d'un chunk est de 256. Sans compression, un chunk stocke jusqu'à 256 points de données. Avec la compression activée, un chunk stocke plus de 256 points de données, selon le taux de compression.
Les chunks constituent la plus petite unité d'expiration. Un chunk est supprimé lorsque tous ses points de données ont expiré.
Point de données : mesure unique de série temporelle, composée d'un horodatage Unix (en millisecondes) et d'une valeur de type DOUBLE.
Cette structure multiniveau (pkey → skey → chunk → point de données) vous permet de regrouper des chronologies associées et d'exécuter des requêtes d'agrégation sur plusieurs skeys en une seule commande, sans intégrer de logique d'agrégation dans votre code applicatif.
Outre les requêtes d'agrégation multi-chronologies, TairTS offre les fonctionnalités suivantes :
Mise à jour et accumulation des données de séries temporelles historiques.
Définition du TTL au niveau de la chronologie, garantissant que chaque chronologie peut effectuer un défilement automatique selon une fenêtre de temps.
Algorithme de compression Gorilla efficace avec des optimisations de stockage spécifiques pour réduire significativement les coûts.
Cas d'utilisation
Stockage et traitement des données de supervision
Supervision à la seconde pour la gestion des performances applicatives (APM)
Analyse et traitement des données pour l’Internet des objets (IoT)
Analyse des données sur des fenêtres temporelles
Mise en cache des flux d’actualités les plus consultés
Contrôle des risques dans les scénarios de limitation de débit
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance Tair basée sur DRAM
Si l'instance est compatible avec Redis 5.0 : version mineure 1.7.20 ou ultérieure
Mettez à jour l'instance vers la dernière version mineure pour bénéficier d'une prise en charge optimale des fonctionnalités et d'une stabilité accrue. Pour les instances en cluster et celles utilisant la séparation lecture/écriture, mettez également à jour les nœuds proxy vers la dernière version mineure afin que toutes les commandes s'exécutent comme prévu. Pour plus d'informations, consultez la rubrique Mettre à jour la version mineure d'une instance.
Remarques sur l'utilisation
Les données TairTS sont stockées sur l'instance Tair.
TairTS prend en charge les écritures et les requêtes en temps réel avec une forte concurrence, mais sa capacité de stockage est limitée. Définissez une durée de vie (TTL) pour les données TairTS afin que les données expirées soient supprimées rapidement.
Modification incompatible dans la version 24.7.0.0. Le 22 juillet 2024, les instances Tair basées sur DRAM compatibles avec Redis 6.0 ont été mises à jour vers la version 24.7.0.0. Cette version introduit le paramètre ts-auto-del-empty-skey-enable, dont la valeur par défaut est yes. Lorsqu'il est défini sur yes, un skey est automatiquement supprimé lorsque tous ses points de données expirent. Dans les versions antérieures à la 24.7.0.0, les skeys expirés ne sont pas supprimés par défaut. Avant d'utiliser TairTS sur une instance compatible avec Redis 6.0, effectuez la mise à niveau vers la version 24.7.0.0 ou ultérieure, puis vérifiez et ajustez manuellement les paramètres du paramètre ts-auto-del-empty-skey-enable afin d'éviter tout comportement inattendu de votre application.
Bonnes pratiques
Définissez CHUNK_SIZE en fonction de votre volume de données
Pour optimiser l'utilisation de la mémoire ainsi que les performances en lecture et en écriture, ajustez CHUNK_SIZE selon le nombre moyen de points de données par skey :
| Nombre moyen de points de données par skey | CHUNK_SIZE recommandé | Raison |
|---|---|---|
| Plus de 5 000 | 256 (par défaut) | Des chunks plus grands réduisent le nombre de chunks et la surcharge liée aux métadonnées |
| Moins de 5 000 | Moyenne / 20 (par exemple, 50 pour 1 000 points) | Des chunks plus petits diminuent le coût de décompression pour les requêtes sur une plage restreinte |
La définition d'une valeur faible pour CHUNK_SIZE associée à un volume d'écriture élevé entraîne la création de nombreux chunks, ce qui peut dégrader les performances.
Définissez systématiquement une durée de vie (TTL) pour les skeys
La capacité de stockage de TairTS est limitée. Spécifiez DATA_ET lors de la création des skeys ou de l'ajout de points de données afin que les données expirées soient nettoyées automatiquement.
Liste des commandes
| Type | Commande | Syntaxe | Description |
|---|---|---|---|
| Opérations d'écriture de base | EXTS.P.CREATE | EXTS.P.CREATE Pkey |
Crée une clé P TairTS. L'opération échoue si une clé P portant le même nom existe déjà. |
| EXTS.S.CREATE | EXTS.S.CREATE Pkey Skey [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 label2 val2 ...] |
Crée une clé S dans une clé P. La clé P est automatiquement créée si elle n'existe pas. L'opération échoue si une clé S portant le même nom existe déjà. | |
| EXTS.S.ALTER | EXTS.S.ALTER Pkey Skey [DATA_ET time] |
Modifie les métadonnées d'une clé S. Seul le paramètre DATA_ET peut être modifié. |
|
| EXTS.S.ADD | EXTS.S.ADD Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Insère un point de données dans une clé S. La clé P ou la clé S est automatiquement créée si elle n'existe pas. Les paramètres de la clé S ne s'appliquent que lors de sa création automatique. | |
| EXTS.S.MADD | EXTS.S.MADD Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Insère un point de données dans plusieurs clés S d'une clé P en un seul appel. La clé P ou les clés S sont automatiquement créées si elles n'existent pas. | |
| EXTS.S.INCRBY | EXTS.S.INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Insère un point de données en ajoutant (ou soustrayant) une valeur au dernier point de données de la clé S. La valeur initiale par défaut est 0. La clé P ou la clé S est automatiquement créée si elle n'existe pas. | |
| EXTS.S.MINCRBY | EXTS.S.MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Insère des points de données dans plusieurs clés S en incrémentant ou décrémentant leurs dernières valeurs. La clé P ou les clés S sont automatiquement créées si elles n'existent pas. | |
| EXTS.S.DEL | EXTS.S.DEL Pkey Skey |
Supprime une clé S et tous ses points de données d'une clé P. | |
| Opérations de lecture de base | EXTS.S.GET | EXTS.S.GET Pkey Skey |
Renvoie le dernier point de données d'une clé S. |
| EXTS.S.INFO | EXTS.S.INFO Pkey Skey |
Renvoie les métadonnées d'une clé S : nombre de points de données, dernier horodatage et valeur, ainsi que les informations sur les libellés. | |
| EXTS.S.QUERYINDEX | EXTS.S.QUERYINDEX Pkey filter1 [filter2 ...] |
Renvoie les clés S d'une clé P qui correspondent aux filtres de libellés spécifiés. | |
| Opérations d'agrégation | EXTS.S.RANGE | EXTS.S.RANGE Pkey Skey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] |
Renvoie les points de données d'une clé S dans une plage de temps fermée, avec agrégation facultative. |
| EXTS.S.MRANGE | EXTS.S.MRANGE Pkey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...] |
Renvoie les points de données de plusieurs clés S correspondant aux filtres de libellés, dans une plage de temps fermée. | |
| EXTS.P.RANGE | EXTS.P.RANGE Pkey fromTs toTs pkeyAggregationType pkeyTimeBucket [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] FILTER filter1 [filter2 ...] |
Agrège les points de données entre les clés S d'une clé P. Les clés S sont d'abord agrégées (comme avec EXTS.S.MRANGE), puis les résultats sont agrégés au niveau de la clé P. | |
| Opérations d'écriture concurrentes | EXTS.S.RAW_MODIFY | EXTS.S.RAW_MODIFY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Définit la valeur d'un point de données à un horodatage spécifique. La clé P ou la clé S est automatiquement créée si elle n'existe pas. |
| EXTS.S.RAW_MMODIFY | EXTS.S.RAW_MMODIFY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Définit les valeurs de plusieurs points de données à des horodatages spécifiques en un seul appel. La clé P ou les clés S sont automatiquement créées si elles n'existent pas. | |
| EXTS.S.RAW_INCRBY | EXTS.S.RAW_INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Modifie un point de données à un horodatage spécifique en ajoutant ou soustrayant une valeur. La clé P ou la clé S est automatiquement créée si elle n'existe pas. La valeur initiale par défaut est 0. | |
| EXTS.S.RAW_MINCRBY | EXTS.S.RAW_MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
Modifie plusieurs points de données à des horodatages spécifiques en un seul appel. La clé P ou les clés S sont automatiquement créées si elles n'existent pas. | |
| Opérations générales | DEL | DEL key [key ...] |
Supprime une ou plusieurs clés TairTS. |
Conventions de syntaxe des commandes :
MOT_CLÉ_EN_MAJUSCULE : mot clé de commande
_Texte en italique_ : variable
[options] : paramètre facultatif
A|B : options mutuellement exclusives
... : le paramètre précédent peut être répété
EXTS.P.CREATE
Time complexity| Élément | Description |
|---|---|
| Syntax | EXTS.P.CREATE Pkey |
| O(1) | |
| description | Crée une pkey TairTS. L'opération échoue si une pkey portant le même nom existe déjà. |
| Parameters | Pkey : nom de la pkey |
| Returns | OK en cas de succès ; un message d'erreur dans le cas contraire |
Exemple :
EXTS.P.CREATE foo
Résultat :
OK
EXTS.S.CREATE
| Élément | description |
|---|---|
| Syntax | EXTS.S.CREATE Pkey Skey [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 label2 val2 ...] |
| Time complexity | O(1) |
| Description | Crée un skey dans le pkey spécifié. Le pkey est créé automatiquement s’il n’existe pas encore. La commande échoue si un skey portant le même nom existe déjà. |
| Parameters | Voir ci-dessous |
| Returns | OK en cas de succès ; un message d’erreur dans le cas contraire |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom du pkey |
Skey |
Nom du skey |
DATA_ET time |
Durée d’expiration relative des points de données, exprimée en millisecondes. Par défaut, aucune expiration n’est définie. |
CHUNK_SIZE size |
Taille d’un chunk unique, par multiples de 16 octets. Valeurs acceptées : 1 à 256. Valeur par défaut : 256 (soit 4 Ko par chunk). Lorsqu’un chunk atteint sa capacité maximale, un nouveau chunk est créé. Consultez les Bonnes pratiques pour obtenir des recommandations d’optimisation. |
UNCOMPRESSED |
Désactive la compression pour le skey. La compression est activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires clé-valeur associées au skey. Exemple : LABELS sensor_id 1. |
Exemple :
EXTS.S.CREATE foo temperature DATA_ET 10000000 LABELS sensor_id 1
Résultat :
OK
EXTS.S.ALTER
| Élément | description |
|---|---|
| Syntax | EXTS.S.ALTER Pkey Skey [DATA_ET time] |
| Time complexity | O(1) |
| Description | Modifie les métadonnées d’une skey. Seul le paramètre DATA_ET peut être modifié. |
| Parameters | Voir ci-dessous |
| Returns | OK en cas de succès ; un message d’erreur dans le cas contraire |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom de la pkey |
Skey |
Nom de la skey |
DATA_ET time |
Nouvelle durée d’expiration relative des points de données, en millisecondes. Par défaut, aucune expiration n’est définie. |
Exemple :
EXTS.S.ALTER foo temperature DATA_ET 100000
Résultat :
OK
EXTS.S.ADD
| Élément | description |
|---|---|
| Syntax | EXTS.S.ADD Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(1) |
| Description | Insère un point de données dans une skey. Crée automatiquement la pkey ou la skey si elles n'existent pas encore. Les paramètres de la skey (DATA_ET, CHUNK_SIZE, UNCOMPRESSED, LABELS) ne s'appliquent que lors de la création automatique de la skey. |
| Parameters | Voir ci-dessous |
| Returns | OK en cas de succès ; un message d'erreur dans le cas contraire |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom de la pkey |
Skey |
Nom de la skey |
ts |
Horodatage Unix du point de données, en millisecondes. Utilisez * pour l'heure actuelle du serveur. |
value |
Valeur du point de données. Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Durée d'expiration relative des points de données, en millisecondes. Par défaut, aucune expiration n'est définie. |
CHUNK_SIZE size |
Taille du chunk, par unités de 16 octets. Valeurs valides : 1–256. Par défaut : 256. Consultez EXTS.S.CREATE. |
UNCOMPRESSED |
Désactive la compression pour la skey. La compression est activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. Exemple : LABELS sensor_id 1. |
Exemple :
EXTS.S.ADD foo temperature * 30.5 DATA_ET 1000000 LABELS sensor_id 1
Sortie :
OK
EXTS.S.MADD
| Élément | description |
|---|---|
| Syntax | EXTS.S.MADD Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(n), où n représente le nombre de skeys |
| Description | Insère un point de données dans plusieurs skeys d'une pkey en un seul appel. La commande crée automatiquement la pkey ou les skeys si elles n'existent pas encore. Les paramètres de skey ne s'appliquent que lors de la création automatique de la skey. |
| Parameters | Voir ci-dessous |
| Returns | OK pour chaque skey en cas de succès ; messages d'erreur dans le cas contraire |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom de la pkey |
keynumber |
Nombre d'enregistrements skey-ts-value à insérer |
Skey |
Nom de la skey |
ts |
Horodatage Unix, en millisecondes. Utilisez * pour l'heure actuelle du serveur. |
value |
Valeur du point de données. Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Durée d'expiration relative, en millisecondes. Par défaut, aucune expiration n'est définie. |
CHUNK_SIZE size |
Taille du chunk, par unités de 16 octets. Valeurs valides : 1–256. Valeur par défaut : 256. |
UNCOMPRESSED |
Désactive la compression. Activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. |
Exemple :
EXTS.S.MADD foo 3 temperature * 30.2 pressure * 2.05 distance * 0.5
Sortie :
1) OK
2) OK
3) OK
EXTS.S.INCRBY
| Élément | Description |
|---|---|
| Syntax | EXTS.S.INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(1) |
| Description | Insère un point de données dont la valeur correspond à la valeur du dernier point de données augmentée de value. Une value négative soustrait cette quantité de la dernière valeur. La commande crée automatiquement la clé primaire (pkey) ou la clé secondaire (skey) si elles n'existent pas. La valeur initiale par défaut est 0. |
| Parameters | Voir ci-dessous |
| Returns | OK en cas de succès ; un message d'erreur dans le cas contraire |
Paramètres :
| Paramètre | Description |
|---|---|
Pkey |
Nom de la clé primaire (pkey). |
Skey |
Nom de la clé secondaire (skey). |
ts |
Horodatage Unix, en millisecondes. Utilisez * pour l'heure actuelle du serveur. |
value |
Incrément (ou décrément si la valeur est négative) à appliquer à la valeur du dernier point de données. Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Délai d'expiration relatif, en millisecondes. Par défaut, aucune expiration n'est définie. |
CHUNK_SIZE size |
Taille du chunk, en unités de 16 octets. Valeurs valides : 1–256. Valeur par défaut : 256. |
UNCOMPRESSED |
Désactive la compression. La compression est activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. |
Exemple :
Commencez par ajouter un point de données initial :
EXTS.S.ADD foo temperature 1644310456023 30.0
Ensuite, incrémentez-le :
EXTS.S.INCRBY foo temperature 1644372093031 2
Résultat :
OK
Vérifiez le résultat :
EXTS.S.GET foo temperature
Résultat :
1) (integer) 1644372093031
2) "32"
EXTS.S.MINCRBY
| Élément | Description |
|---|---|
| Syntax | EXTS.S.MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(n), où n représente le nombre de skeys |
| Description | Insère des points de données dans plusieurs skeys en incrémentant (ou en décrémentant) la dernière valeur de chaque skey. Crée automatiquement le pkey ou les skeys s'ils n'existent pas encore. La valeur initiale par défaut est 0. |
| Parameters | Voir ci-dessous |
| Returns | OK pour chaque skey en cas de succès ; messages d'erreur dans le cas contraire |
Paramètres :
| Paramètre | Description |
|---|---|
Pkey |
Nom du pkey |
keynumber |
Nombre de skeys |
Skey |
Nom du skey |
ts |
Horodatage Unix, en millisecondes. Utilisez * pour l'heure actuelle du serveur. |
value |
Incrément (ou décrément si la valeur est négative). Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Délai d'expiration relatif, en millisecondes. Aucune expiration par défaut. |
CHUNK_SIZE size |
Taille du chunk, par unités de 16 octets. Valeurs valides : 1–256. Par défaut : 256. |
UNCOMPRESSED |
Désactive la compression. Activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. |
Exemple :
EXTS.S.MINCRBY foo 3 temperature * 0.2 pressure * -0.1 distance * 0.0
Sortie :
1) OK
2) OK
3) OK
EXTS.S.DEL
| Élément | description |
|---|---|
| Syntax | EXTS.S.DEL Pkey Skey |
| Time complexity | O(1) |
| Description | Supprime un skey et tous ses points de données d'un pkey. |
| Parameters | Pkey : nom du pkey ; Skey : nom du skey |
| Returns | OK en cas de succès ; un message d'erreur dans le cas contraire |
Exemple :
EXTS.S.DEL foo temperature
Résultat :
OK
EXTS.S.GET
| Élément | Description |
|---|---|
| Syntax | EXTS.S.GET Pkey Skey |
| Time complexity | O(1) |
| description | Renvoie le dernier point de données d'un skey. |
| Parameters | Pkey : nom du pkey ; Skey : nom du skey |
| Returns | Le dernier point de données (horodatage et valeur) en cas de succès ; nil si le pkey ou le skey n'existe pas ; un message d'erreur dans les autres cas |
Exemple :
EXTS.S.GET foo temperature
Résultat :
1) (integer) 1644372730150
2) "32.2"
EXTS.S.INFO
| Élément | Description |
|---|---|
| Syntax | EXTS.S.INFO Pkey Skey |
| Time complexity | O(1) |
| Description | Renvoie les métadonnées d'une skey, notamment le nombre de points de données, l'horodatage et la valeur les plus récents, ainsi que les informations de libellé. |
| Parameters | Pkey : nom de la pkey ; Skey : nom de la skey |
| Returns | Métadonnées de la skey en cas de succès ; nil si la pkey ou la skey n'existe pas ; message d'erreur dans les autres cas |
Exemple :
EXTS.S.INFO foo temperature
Sortie :
1) totalDataPoints // Number of data points
2) (integer) 1
3) maxDataPoints // Maximum data points the skey can hold (0 = no limit)
4) (integer) 0
5) maxDataPointsPerChunk // Data points per chunk
6) (integer) 32
7) dataPointsExpireTime // Relative expiration time in milliseconds (0 = no expiration)
8) (integer) 0
9) lastTimestamp // Timestamp of the latest data point
10) (integer) 1644389400996
11) chunkCount // Number of chunks in the skey
12) (integer) 1
13) lastValue // Value of the latest data point
14) (integer) 28
15) labels // Label information
16) 1) 1) "sensor_id"
2) "1"
EXTS.S.QUERYINDEX
| Élément | description |
|---|---|
| Syntax | EXTS.S.QUERYINDEX Pkey filter1 [filter2 ...] |
| Time complexity | O(n), où n représente le nombre maximal d'ensembles impliqués dans les conditions de filtre |
| Description | Renvoie les skeys d'une pkey qui correspondent aux filtres de libellé spécifiés. |
| Parameters | Voir ci-dessous |
| Returns | Noms des skeys correspondants en cas de succès ; nil si la pkey ou la skey n'existe pas ; un message d'erreur dans les autres cas |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom de la pkey |
filter |
Conditions de filtre de libellé. Au moins une condition EQ, CONTAINS ou LIST_MATCH est requise. Consultez la section Syntaxe de filtrage par index. |
Exemple :
EXTS.S.QUERYINDEX foo sensor_id=1
Résultat :
1) "temperature"
EXTS.S.RANGE
| Élément | Description |
|---|---|
| Syntax | EXTS.S.RANGE Pkey Skey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] |
| Time complexity | O(n), où n représente le nombre de fragments contenant les points de données interrogés |
| Description | Renvoie les points de données d'une skey dans une plage de temps fermée [fromTs, toTs], avec agrégation facultative. |
| Parameters | Voir ci-dessous |
| Returns | Points de données (ou résultats d'agrégation) accompagnés d'un jeton de continuation ; nil si la pkey ou la skey n'existe pas ; un message d'erreur dans les autres cas |
Paramètres :
| Paramètre | Description |
|---|---|
Pkey |
Nom de la pkey |
Skey |
Nom de la skey |
fromTs |
Début de la plage de temps, exprimé sous forme d'horodatage Unix en millisecondes |
toTs |
Fin de la plage de temps, exprimée sous forme d'horodatage Unix en millisecondes. Utilisez * pour indiquer l'heure actuelle. Si toTs est égal à fromTs, la requête renvoie les données correspondant à cet instant précis. |
MAXCOUNT count |
Nombre maximal de points de données à renvoyer. Aucune limite par défaut. Limite supérieure : 1 000 000. |
AGGREGATION aggregationType timeBucket |
Type d'agrégation (par exemple, MAX, AVG, SUM) et taille du compartiment de temps en millisecondes (minimum : 1 000). Les données de chaque compartiment sont agrégées et renvoyées sous la forme d'une valeur unique. L'horodatage de chaque résultat correspond au début de son compartiment. Consultez la section Syntaxe d'agrégation. |
La réponse inclut un jeton de continuation en tant que dernier élément :
0: tous les points de données correspondants sont renvoyés1: certains points de données ne sont pas inclus. Utilisez l'horodatage du dernier point de données renvoyé comme prochainfromTspour récupérer les données restantes.
Exemple :
EXTS.S.RANGE foo test 1644459031662 * AGGREGATION AVG 10000 MAXCOUNT 2
Cette commande renvoie la valeur moyenne par compartiment de 10 secondes, limitée à 2 résultats.
Sortie :
1) 1) 1) (integer) 1644459730000
2) "20.6"
2) 1) (integer) 1644459790000
2) "21.2"
2) (integer) 1
Le jeton 1 indique qu'il existe d'autres points de données au-delà de ces 2 résultats.
EXTS.S.MRANGE
| Élément | Description |
|---|---|
| Syntax | EXTS.S.MRANGE Pkey fromTs toTs [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] [WITHLABELS] FILTER filter1 [filter2 ...] |
| Time complexity | O(n), où n représente le nombre de blocs contenant les points de données interrogés |
| Description | Renvoie les points de données issus de plusieurs skeys correspondant aux filtres de libellés, dans une plage de temps fermée [fromTs, toTs]. |
| Parameters | Voir ci-dessous |
| Returns | Les skeys correspondants avec leurs points de données en cas de succès ; nil si la pkey ou la skey n'existe pas ; un message d'erreur dans les autres cas |
Paramètres :
| Paramètre | Description |
|---|---|
Pkey |
Nom de la pkey |
fromTs |
Début de la plage de temps, sous forme d'horodatage Unix en millisecondes |
toTs |
Fin de la plage de temps, sous forme d'horodatage Unix en millisecondes. Utilisez * pour l'heure actuelle. |
MAXCOUNT count |
Nombre maximal de points de données à renvoyer par skey. Limite supérieure : 1 000 000. |
AGGREGATION aggregationType timeBucket |
Type d'agrégation et taille du compartiment de temps en millisecondes (minimum : 1 000). Les résultats sont renvoyés au début de chaque compartiment. |
WITHLABELS |
Inclut les informations de libellé dans la sortie. Omis par défaut. |
FILTER filter ... |
Conditions de filtre de libellé. Au moins une condition EQ, CONTAINS ou LIST_MATCH est requise. Consultez la section Syntaxe de filtrage d'index. |
Exemple :
EXTS.S.MRANGE foo 1644451031662 * AGGREGATION MAX 10000 WITHLABELS FILTER sensor_id=1
Sortie :
1) 1) "temperature"
2) 1) 1) "sensor_id"
2) "1"
3) 1) 1) (integer) 1644481000000
2) "30"
4) (integer) 0
2) 1) "test"
2) 1) 1) "sensor_id"
2) "1"
3) 1) 1) (integer) 1644459730000
2) "20"
2) 1) (integer) 1644459790000
2) "20"
3) 1) (integer) 1644460620000
2) "29"
4) (integer) 0
EXTS.P.RANGE
| Élément | description |
|---|---|
| Syntax | EXTS.P.RANGE Pkey fromTs toTs pkeyAggregationType pkeyTimeBucket [MAXCOUNT count] [AGGREGATION aggregationType timeBucket] FILTER filter1 [filter2 ...] |
| Time complexity | O(n), où n représente le nombre de fragments contenant les points de données interrogés |
| description | Agrège les données de plusieurs skeys au sein d'une même pkey. Les skeys correspondant aux filtres sont d'abord agrégées (comme avec EXTS.S.MRANGE), puis les résultats des skeys sont consolidés au niveau de la pkey. |
| Parameters | Voir ci-dessous |
| Returns | Résultats de l'agrégation au niveau de la pkey en cas de succès ; nil si la pkey ou la skey n'existe pas ; un message d'erreur dans les autres cas |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom de la pkey |
fromTs |
Début de la plage temporelle, exprimé sous forme d'horodatage Unix en millisecondes |
toTs |
Fin de la plage temporelle, exprimée sous forme d'horodatage Unix en millisecondes. Utilisez * pour indiquer l'heure actuelle. |
pkeyAggregationType |
type d'agrégation appliqué au niveau de la pkey. Consultez la section Syntaxe d'agrégation. |
pkeyTimeBucket |
Taille du compartiment temporel pour l'agrégation au niveau de la pkey, en millisecondes. Minimum : 1 000. |
MAXCOUNT count |
Nombre maximal de points de données à renvoyer par skey. Limite supérieure : 1 000 000. |
AGGREGATION aggregationType timeBucket |
type d'agrégation et taille du compartiment temporel pour l'agrégation au niveau de la skey, en millisecondes. Minimum : 1 000. |
FILTER filter ... |
Conditions de filtrage par libellé. Au moins une condition EQ, CONTAINS ou LIST_MATCH est requise. Consultez la section Syntaxe de filtrage par index. |
Exemple :
EXTS.P.RANGE foo 1644451031662 * SUM 500000 AGGREGATION SUM 10000 FILTER sensor_id=1
Sortie :
1) 1) 1) (integer) 1644459500000
2) "40"
2) 1) (integer) 1644460500000
2) "29"
3) 1) (integer) 1644481000000
2) "30"
2) (integer) 0
EXTS.S.RAW_MODIFY
| Élément | Description |
|---|---|
| Syntax | EXTS.S.RAW_MODIFY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(1) |
| Description | Définit la valeur d'un point de données à un horodatage spécifique dans une skey. Crée automatiquement la pkey ou la skey si elles n'existent pas. Les paramètres de la skey ne prennent effet que lors de la création automatique de celle-ci. |
| Parameters | Voir ci-dessous |
| Returns | OK en cas de succès ; un message d'erreur dans le cas contraire |
Paramètres :
| Paramètre | Description |
|---|---|
Pkey |
Nom de la pkey |
Skey |
Nom de la skey |
ts |
Horodatage Unix du point de données à mettre à jour, en millisecondes |
value |
Nouvelle valeur du point de données. Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Durée d'expiration relative, en millisecondes. Par défaut, aucune expiration n'est définie. |
CHUNK_SIZE size |
Taille du chunk, par unités de 16 octets. Valeurs valides : 1–256. Valeur par défaut : 256. |
UNCOMPRESSED |
Désactive la compression. Activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. |
Exemple :
EXTS.S.RAW_MODIFY foo temperature 1644310456023 31.5
Résultat :
OK
EXTS.S.RAW_MMODIFY
| Élément | description |
|---|---|
| Syntax | EXTS.S.RAW_MMODIFY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(n), où n représente le nombre de skeys |
| Description | Cette commande permet de définir les valeurs de plusieurs points de données à des horodatages spécifiques en un seul appel. Elle crée automatiquement la pkey ou les skeys si elles n'existent pas encore. |
| Parameters | Voir ci-dessous |
| Returns | OK pour chaque skey en cas de succès ; messages d'erreur dans le cas contraire |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom de la pkey |
keynumber |
Nombre d'enregistrements skey-ts-value à mettre à jour |
Skey |
Nom de la skey |
ts |
Horodatage Unix du point de données à mettre à jour, en millisecondes |
value |
Nouvelle valeur du point de données. Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Délai d'expiration relatif, en millisecondes. Par défaut, aucune expiration n'est définie. |
CHUNK_SIZE size |
Taille du chunk, par unités de 16 octets. Valeurs valides : 1–256. Valeur par défaut : 256. |
UNCOMPRESSED |
Désactive la compression. Activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. |
Exemple :
EXTS.S.RAW_MMODIFY foo 3 temperature 1644565954814 30.2 pressure 1644565954814 2.05 distance 1644565954814 0.5
Sortie :
1) OK
2) OK
3) OK
EXTS.S.RAW_INCRBY
| Élément | Description |
|---|---|
| Syntax | EXTS.S.RAW_INCRBY Pkey Skey ts value [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(1) |
| Description | Modifie un point de données à un horodatage spécifique en ajoutant ou en soustrayant une valeur. Crée automatiquement la pkey ou la skey si elles n'existent pas. La valeur initiale par défaut est 0. |
| Parameters | Voir ci-dessous |
| Returns | OK en cas de succès ; un message d'erreur dans le cas contraire |
Paramètres :
| Paramètre | Description |
|---|---|
Pkey |
Le nom de la pkey |
Skey |
Le nom de la skey |
ts |
Horodatage Unix du point de données à mettre à jour, en millisecondes |
value |
L'incrément (ou le décrément si la valeur est négative). Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Délai d'expiration relatif, en millisecondes. Par défaut, aucune expiration n'est définie. |
CHUNK_SIZE size |
Taille du chunk, en unités de 16 octets. Valeurs valides : 1–256. Par défaut : 256. |
UNCOMPRESSED |
Désactive la compression. Activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. |
Exemple :
Tout d'abord, ajoutez un point de données initial :
EXTS.S.ADD foo temperature 1644310456 30.0
Appliquez ensuite un incrément au même horodatage :
EXTS.S.RAW_INCRBY foo temperature 1644310456 3.3
Résultat :
OK
Vérifiez le résultat :
EXTS.S.GET foo temperature
Résultat :
1) (integer) 1644310456
2) "33.3"
EXTS.S.RAW_MINCRBY
| Élément | description |
|---|---|
| Syntax | EXTS.S.RAW_MINCRBY Pkey keynumber Skey ts value [Skey ts value ...] [DATA_ET time] [CHUNK_SIZE size] [UNCOMPRESSED] [LABELS label1 val1 ...] |
| Time complexity | O(n), où n représente le nombre de points de données |
| Description | Modifie plusieurs points de données à des horodatages spécifiques en un seul appel. Crée automatiquement la pkey ou les skeys si elles n'existent pas. |
| Parameters | Voir ci-dessous |
| Returns | OK pour chaque skey en cas de succès ; messages d'erreur sinon |
Paramètres :
| Paramètre | description |
|---|---|
Pkey |
Nom de la pkey |
keynumber |
Nombre d'enregistrements skey-ts-value à mettre à jour |
Skey |
Nom de la skey |
ts |
Horodatage Unix du point de données à mettre à jour, en millisecondes |
value |
L'incrément (ou le décrément si la valeur est négative). Doit être un nombre à virgule flottante en double précision. |
DATA_ET time |
Délai d'expiration relatif, en millisecondes. Par défaut, aucune expiration n'est définie. |
CHUNK_SIZE size |
Taille du chunk, par unités de 16 octets. Valeurs valides : 1–256. Valeur par défaut : 256. |
UNCOMPRESSED |
Désactive la compression. Activée par défaut. |
LABELS label val ... |
Une ou plusieurs paires libellé-valeur. |
Exemple :
EXTS.S.RAW_MINCRBY foo 3 temperature 1644565954814 30.2 pressure 1644565954814 2.05 distance 1644565954814 0.5
Résultat :
1) OK
2) OK
3) OK
Syntaxe de filtrage d'index
Utilisez des filtres de libellé pour sélectionner les skeys dans EXTS.S.QUERYINDEX, EXTS.S.MRANGE et EXTS.P.RANGE. Au moins une condition EQ, CONTAINS ou LIST_MATCH est requise.
| Expression de filtre | Logique | description |
|---|---|---|
L = V |
EQ | Le libellé L est égal à V |
L != |
CONTAINS | Le libellé L existe (n'est pas nul) |
L = (v1,v2,...) |
LIST_MATCH | Le libellé L correspond à l'une des valeurs répertoriées |
L != V |
NOEQ | Le libellé L n'est pas égal à V |
L = |
NOCONTAINS | Le libellé L n'existe pas (est nul) |
L != (v1,v2,...) |
LIST_NOTMATCH | Le libellé L ne correspond à aucune des valeurs répertoriées |
Syntaxe d'agrégation
L'agrégation regroupe les points de données au sein de chaque intervalle temporel défini par timeBucket et calcule une valeur unique pour chaque intervalle. Les types d'agrégation suivants sont pris en charge :
| Type | Valeur renvoyée |
|---|---|
MAX |
Valeur maximale |
MIN |
Valeur minimale |
AVG |
Valeur moyenne |
SUM |
Somme de toutes les valeurs |
FIRST |
Première valeur de l'intervalle |
LAST |
Dernière valeur de l'intervalle |
RANGE |
Différence entre les valeurs maximale et minimale |
COUNT |
Nombre de valeurs |
STD.P |
Écart-type de la population |
STD.S |
Écart-type de l'échantillon |
VAR.P |
Variance de la population |
VAR.S |
Variance de l'échantillon |
FAQ
Pourquoi la valeur par défaut de CHUNK_SIZE est-elle faible sur certaines instances Tair basées sur DRAM compatibles avec Redis 5.0 ?
À partir de la version 25.2.0.0, la valeur par défaut de CHUNK_SIZE est 256. Dans les versions antérieures, elle est définie par défaut à 32.