Tous les produits
Search
Centre de documentation

Tair (Redis® OSS-Compatible):exHash

Dernière mise à jour :Aug 08, 2026

TairHash (exHash) est une structure de données hash qui vous permet de définir une date d'expiration et un numéro de version pour chaque champ. Cette fonctionnalité améliore la flexibilité de la structure de données hash et simplifie le développement dans de nombreux scénarios.

Présentation

TairHash étend le hash Redis standard avec deux fonctionnalités absentes du hash Redis natif : l'expiration par champ et le versioning par champ. Vous pouvez définir un TTL sur des champs individuels sans affecter le reste de la clé, et utiliser des numéros de version pour prévenir les écritures concurrentes conflictuelles.

TairHash utilise un algorithme d'expiration active qui vérifie et supprime proactivement les champs expirés sans affecter sensiblement le temps de réponse. Il prend également en charge l'expiration passive, qui supprime les champs expirés lors de leur accès.

Principales fonctionnalités

  • Définissez une date d'expiration et un numéro de version pour chaque champ.

  • Utilisez des politiques d'expiration active et passive pour les champs.

  • Bénéficiez d'une syntaxe similaire au type de données hash Redis natif.

Ce module est open source. Pour plus d'informations, consultez TairHash.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Maintenez votre instance à jour avec la dernière version mineure pour bénéficier de fonctionnalités supplémentaires et d'une stabilité améliorée. Consultez la rubrique Mise à jour de la version mineure. Pour les instances utilisant une architecture de cluster ou une architecture de lecture/écriture séparée, mettez également à jour les nœuds proxy, sinon certaines commandes risquent de ne pas être reconnues.

Précautions

Les commandes s'exécutent sur les données TairHash dans une instance Tair.

Commandes

Les tableaux suivants répertorient toutes les commandes TairHash, regroupées par type d'opération.

Commandes d'écriture

Commande Syntaxe Description
EXHSET EXHSET key field value [EX time] [EXAT time] [PX time] [PXAT time] [NX | XX] [VER | ABS version] [KEEPTTL] Ajoute un champ à la clé TairHash spécifiée. Crée la clé si elle n'existe pas. Écrase la valeur du champ si celui-ci existe déjà.
EXHMSET EXHMSET key field value [field value ...] Ajoute plusieurs champs à la clé TairHash spécifiée. Crée la clé si elle n'existe pas. Écrase les valeurs des champs existants.
EXHINCRBY EXHINCRBY key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL] Incrémente la valeur entière d'un champ de num. Crée la clé ou le champ s'ils n'existent pas (le champ commence à 0 avant l'incrémentation).
EXHINCRBYFLOAT EXHINCRBYFLOAT key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL] Incrémente la valeur flottante d'un champ de num. Crée la clé ou le champ s'ils n'existent pas (le champ commence à 0 avant l'incrémentation).

Commandes d'expiration

Commande Syntaxe Description
EXHEXPIRE EXHEXPIRE key field seconds [VER | ABS version] Définit une durée d'expiration relative en secondes pour un champ.
EXHPEXPIRE EXHPEXPIRE key field milliseconds [VER | ABS version] Définit une durée d'expiration relative en millisecondes pour un champ.
EXHEXPIREAT EXHEXPIREAT key field timestamp [VER | ABS version] Définit une heure d'expiration absolue (horodatage UNIX en secondes) pour un champ.
EXHPEXPIREAT EXHPEXPIREAT key field milliseconds-timestamp [VER | ABS version] Définit une heure d'expiration absolue (horodatage UNIX en millisecondes) pour un champ.

Commandes de lecture

Commande Syntaxe Description
EXHGET EXHGET key field Récupère la valeur d'un champ. Renvoie nil si la clé ou le champ n'existe pas.
EXHMGET EXHMGET key field [field ...] Récupère les valeurs de plusieurs champs. Renvoie nil pour les champs qui n'existent pas.
EXHGETWITHVER EXHGETWITHVER key field Récupère la valeur et le numéro de version d'un champ. Renvoie nil si la clé ou le champ n'existe pas.
EXHMGETWITHVER EXHMGETWITHVER key field [field ...] Récupère les valeurs et les numéros de version de plusieurs champs.
EXHTTL EXHTTL key field Récupère le TTL restant d'un champ, en secondes.
EXHPTTL EXHPTTL key field Récupère le TTL restant d'un champ, en millisecondes.
EXHVER EXHVER key field Récupère le numéro de version actuel d'un champ.
EXHLEN EXHLEN key [NOEXP] Récupère le nombre de champs dans la clé. Spécifiez NOEXP pour compter uniquement les champs non expirés.
EXHEXISTS EXHEXISTS key field Vérifie si un champ existe.
EXHSTRLEN EXHSTRLEN key field Récupère la longueur de la chaîne de valeur d'un champ.
EXHKEYS EXHKEYS key Récupère tous les champs de la clé.
EXHVALS EXHVALS key Récupère toutes les valeurs de champ de la clé.
EXHGETALL EXHGETALL key Récupère tous les champs et leurs valeurs dans la clé.
EXHSCAN EXHSCAN key op subkey [MATCH pattern] [COUNT count] Parcourt la clé de manière itérative. Uniquement pour les instances optimisées pour la mémoire.

Commandes de version

Commande Syntaxe Description
EXHSETVER EXHSETVER key field version Définit le numéro de version d'un champ.

Commandes de suppression

Commande Syntaxe Description
EXHDEL EXHDEL key field [field ...] Supprime un ou plusieurs champs de la clé.
DEL DEL key [key ...] Supprime une ou plusieurs clés TairHash à l'aide de la commande DEL native de Redis.

Conventions de syntaxe

Convention Signification
UPPERCASE KEYWORD Mot-clé de commande
_italique_ Variable
[option] Paramètre facultatif
A|B Mutuellement exclusif — spécifiez-en un seul
... Le paramètre peut être répété

EXHSET

time complexity
**Syntaxe** **EXHSET key field value [EX time] [EXAT time] [PX time] [PXAT time] [NX | XX] [VER | ABS version] [KEEPTTL]**
O(1)
Description Ajoute un champ à la clé TairHash spécifiée. Crée la clé si elle n'existe pas. Écrase la valeur du champ si celui-ci existe déjà.

Options

Option Description
key La clé TairHash.
field Le champ à définir.
value La valeur du champ.
EX time Durée d'expiration relative en secondes. 0 signifie que le champ expire immédiatement. Omettez cette option pour ne définir aucune expiration.
EXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en secondes. 0 signifie que le champ expire immédiatement.
PX time Durée d'expiration relative en millisecondes. 0 signifie que le champ expire immédiatement.
PXAT time Heure d'expiration absolue sous forme d'horodatage UNIX en millisecondes. 0 signifie que le champ expire immédiatement.
NX Définit le champ uniquement s'il n'existe pas déjà.
XX Définit le champ uniquement s'il existe déjà.
VER version Contrôle de concurrence optimiste. Si le champ existe et que sa version actuelle correspond à version, l'opération se poursuit et la version est incrémentée de 1. Si les versions diffèrent, une erreur est renvoyée. Si le champ n'existe pas ou si sa version est 0, la vérification est ignorée et la version devient 1 après l'opération.
ABS version Définit la version à une valeur exacte, indépendamment de la version actuelle.
KEEPTTL Conserve l'expiration actuelle du champ lorsque vous ne spécifiez pas EX, EXAT, PX ni PXAT. Sans KEEPTTL, EXHSET efface l'expiration existante.
Après avoir défini un délai d'expiration pour un champ, l'exécution d'EXHSET à nouveau sans option de délai d'expiration efface l'expiration (sauf si vous utilisez KEEPTTL). Pour définir une expiration sur la clé elle-même, utilisez la commande native EXPIRE ou EXPIREAT.

Valeurs de retour

Valeur Signification
1 Un nouveau champ a été créé.
0 Le champ existait et sa valeur a été écrasée.
-1 XX a été spécifié mais le champ n'existe pas, ou NX a été spécifié mais le champ existe déjà.
"ERR update version is stale" VER a été spécifié et la version ne correspond pas à la version actuelle.

Exemple

EXHSET myhash field1 val EX 10
(integer) 1

EXHGET

**Syntaxe** **EXHGET key field**
Complexité temporelle O(1)
Description Récupère la valeur d'un champ. Renvoie nil si la clé ou le champ n'existe pas.

Valeurs de retour

Valeur Signification
Valeur du champ Le champ existe.
nil La clé ou le champ n'existe pas.

Exemple

EXHSET myhash field1 val
EXHGET myhash field1
"val"

EXHMSET

**Syntaxe** **EXHMSET key field value [field value ...]**
Complexité temporelle O(N), où N est le nombre de champs
Description Ajoute plusieurs champs à la clé TairHash spécifiée. Crée la clé si elle n'existe pas. Écrase les valeurs des champs existants.
Pour définir une expiration sur des champs individuels après leur création, utilisez EXHEXPIRE, EXHPEXPIRE, EXHEXPIREAT ou EXHPEXPIREAT. Pour définir une expiration sur la clé elle-même, utilisez la commande native EXPIRE ou EXPIREAT.

Valeurs de retour

Valeur Signification
OK L'opération a réussi.

Exemple

EXHMSET myhash field1 val1 field2 val2
OK

EXHEXPIRE

**Syntaxe** **EXHEXPIRE key field seconds [VER | ABS version]**
Complexité temporelle O(1)
Description Définit une durée d'expiration relative en secondes pour un champ.

Options

Option Description
key La clé TairHash.
field Le champ sur lequel définir l'expiration.
seconds Durée d'expiration relative en secondes.
VER version Même comportement de contrôle de concurrence optimiste que dans EXHSET.
ABS version Définit la version à une valeur exacte, indépendamment de la version actuelle.

Valeurs de retour

Valeur Signification
1 Le champ existe et l'expiration a été définie.
0 Le champ n'existe pas.

Exemple

EXHSET myhash field1 val
EXHEXPIRE myhash field1 100
(integer) 1

EXHPEXPIRE

**Syntaxe** **EXHPEXPIRE key field milliseconds [VER | ABS version]**
Complexité temporelle O(1)
Description Définit un délai d'expiration relatif en millisecondes pour un champ.

Options

Option Description
key La clé TairHash.
field Le champ sur lequel définir l'expiration.
milliseconds Délai d'expiration relatif en millisecondes.
VER version Même comportement de concurrence optimiste que dans EXHSET.
ABS version Définit la version à une valeur exacte, indépendamment de la version actuelle.

Valeurs de retour

Valeur Signification
1 Le champ existe et l'expiration a été définie.
0 Le champ n'existe pas.

Exemple

EXHSET myhash field1 val
EXHPEXPIRE myhash field1 1000
(integer) 1

EXHEXPIREAT

**Syntaxe** **EXHEXPIREAT key field timestamp [VER | ABS version]**
Complexité temporelle O(1)
Description Définit un délai d'expiration absolu (horodatage UNIX en secondes) pour un champ.

Options

Option Description
key La clé TairHash.
field Le champ sur lequel définir l'expiration.
timestamp Horodatage UNIX absolu en secondes.
VER version Même comportement de concurrence optimiste que dans EXHSET.
ABS version Définit la version à une valeur exacte, indépendamment de la version actuelle.

Valeurs de retour

Valeur Signification
1 Le champ existe et l'expiration a été définie.
0 Le champ n'existe pas.

Exemple

EXHEXPIREAT myhash field1 1293840000
(integer) 1

EXHPEXPIREAT

**Syntaxe** **EXHPEXPIREAT key field milliseconds-timestamp [VER | ABS version]**
Complexité temporelle O(1)
Description Définit un délai d'expiration absolu (horodatage UNIX en millisecondes) pour un champ.

Options

Option Description
key La clé TairHash.
field Le champ sur lequel définir l'expiration.
milliseconds-timestamp Horodatage UNIX absolu en millisecondes.
VER version Même comportement de concurrence optimiste que dans EXHSET.
ABS version Définit la version à une valeur exacte, indépendamment de la version actuelle.

Valeurs de retour

Valeur Signification
1 Le champ existe et l'expiration a été définie.
0 Le champ n'existe pas.

Exemple

EXHPEXPIREAT myhash field1 1293840000000
(integer) 1

EXHTTL

**Syntaxe** **EXHTTL key field**
Complexité temporelle O(1)
Description Récupère le TTL restant d'un champ, en secondes.

Valeurs de retour

Valeur Signification
Entier positif TTL restant en secondes.
-1 Le champ existe mais aucune expiration n'est définie.
-2 La clé n'existe pas.
-3 Le champ n'existe pas.

Exemple

L'exemple suivant illustre tous les états de retour possibles au sein d'une même séquence : un champ avec un TTL défini (85), et un champ sans expiration (-1).

EXHSET myhash field1 val1 EX 100
EXHSET myhash field2 val2
EXHTTL myhash field1
EXHTTL myhash field2
EXHTTL myhash field3
(integer) 85
(integer) -1
(integer) -3

EXHPTTL

**Syntaxe** **EXHPTTL key field**
Complexité temporelle O(1)
Description Récupère le TTL restant d'un champ, en millisecondes.

Valeurs de retour

Valeur Signification
Entier positif TTL restant en millisecondes.
-1 Le champ existe mais aucune expiration n'est définie.
-2 La clé n'existe pas.
-3 Le champ n'existe pas.

Exemple

EXHSET myhash field1 val1 EX 100
EXHPTTL myhash field1
(integer) 97213

EXHVER

**Syntaxe** **EXHVER key field**
Complexité temporelle O(1)
Description Récupère le numéro de version actuel d'un champ.

Valeurs de retour

Valeur Signification
Entier positif Le numéro de version actuel.
-1 La clé n'existe pas.
-2 Le champ n'existe pas.

Exemple

EXHVER myhash field1
(integer) 1

EXHSETVER

**Syntaxe** **EXHSETVER key field version**
Complexité temporelle O(1)
Description Définit le numéro de version d'un champ à une valeur exacte.

Valeurs de retour

Valeur Signification
1 La version a été définie.
0 La clé ou le champ n'existe pas.

Exemple

EXHSETVER myhash field1 3
(integer) 1

EXHINCRBY

**Syntaxe** **EXHINCRBY key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL]**
Complexité temporelle O(1)
Description Incrémente la valeur entière d'un champ de num. Crée la clé ou le champ s'ils n'existent pas ; un nouveau champ commence à 0 avant l'incrément.

Options

Option Description
key La clé TairHash.
field Le champ à incrémenter.
num Valeur d'incrément entière.
EX, EXAT, PX, PXAT Identique à EXHSET.
VER version Même comportement de concurrence optimiste que dans EXHSET.
ABS version Définit la version à une valeur exacte, indépendamment de la version actuelle.
MIN minval Valeur minimale autorisée. Une erreur est renvoyée si le résultat est inférieur à minval.
MAX maxval Valeur maximale autorisée. Une erreur est renvoyée si le résultat dépasse maxval.
KEEPTTL Conserve l'expiration actuelle du champ. Même comportement que dans EXHSET.
Après avoir défini un délai d'expiration pour un champ, l'exécution d'EXHINCRBY sans option de délai d'expiration efface l'expiration (sauf si vous utilisez KEEPTTL ).

Valeurs de retour

Valeur Signification
Entier La nouvelle valeur après l'incrément.

Exemple

EXHMSET myhash field1 10
EXHINCRBY myhash field1 100
(integer) 110

EXHINCRBYFLOAT

**Syntaxe** **EXHINCRBYFLOAT key field num [EX time] [EXAT time] [PX time] [PXAT time] [VER | ABS version] [MIN minval] [MAX maxval] [KEEPTTL]**
Complexité temporelle O(1)
Description Incrémente la valeur à virgule flottante d'un champ de num. Crée la clé ou le champ s'ils n'existent pas ; un nouveau champ commence à 0 avant l'incrément.

Options

Option Description
key La clé TairHash.
field Le champ à incrémenter.
num Valeur d'incrément à virgule flottante.
EX, EXAT, PX, PXAT Identique à EXHSET.
VER version Même comportement de concurrence optimiste que dans EXHSET.
ABS version Définit la version à une valeur exacte, indépendamment de la version actuelle.
MIN minval Valeur minimale autorisée. Une erreur est renvoyée si le résultat est inférieur à minval.
MAX maxval Valeur maximale autorisée. Une erreur est renvoyée si le résultat dépasse maxval.
KEEPTTL Conserve l'expiration actuelle du champ. Même comportement que dans EXHSET.
Après avoir défini un délai d'expiration pour un champ, l'exécution d'EXHINCRBYFLOAT sans option de délai d'expiration efface l'expiration (sauf si vous utilisez KEEPTTL ).

Valeurs de retour

Valeur Signification
Chaîne à virgule flottante La nouvelle valeur après l'incrément.

Exemple

EXHMSET myhash field1 10
EXHINCRBYFLOAT myhash field1 9.235
"19.235"

EXHGETWITHVER

**Syntaxe** **EXHGETWITHVER key field**
Complexité temporelle O(1)
Description Récupère la valeur et le numéro de version d'un champ. Renvoie nil si la clé ou le champ n'existe pas.

Valeurs de retour

Valeur Signification
Tableau de [value, version] Le champ existe.
nil La clé ou le champ n'existe pas.

Exemple

EXHGETWITHVER myhash field1
1) "19.235"
2) (integer) 5

EXHMGET

**Syntaxe** **EXHMGET key field [field ...]**
Complexité temporelle O(1)
Description Récupère les valeurs de plusieurs champs. Renvoie nil pour les champs qui n'existent pas.

Valeurs de retour

Valeur Signification
nil La clé n'existe pas.
Tableau de valeurs Un élément par champ demandé ; nil pour les champs inexistants.

Exemple

EXHMSET myhash field1 10 field2 var1
EXHMGET myhash field1 field2
1) "10"
2) "var1"

EXHMGETWITHVER

**Syntaxe** **EXHMGETWITHVER key field [field ...]**
Complexité temporelle O(1)
description Récupère les valeurs et les numéros de version de plusieurs champs. Renvoie nil pour les champs qui n'existent pas.

Valeurs de retour

Valeur Signification
nil La clé n'existe pas.
Tableau de paires [value, version] Un élément par champ demandé ; nil pour les champs inexistants.

Exemple

EXHMSET myhash field1 10 field2 var1
EXHMGETWITHVER myhash field1 field2
1) 1) "10"
   2) (integer) 1
2) 1) "var1"
   2) (integer) 1

EXHLEN

**Syntaxe** **EXHLEN key [NOEXP]**
Complexité temporelle O(1) sans NOEXP ; O(N) avec NOEXP
description Récupère le nombre de champs dans la clé. Par défaut, inclut les champs expirés mais non encore supprimés. Utilisez NOEXP pour compter uniquement les champs non expirés.

Options

Option description
NOEXP Parcourt l'intégralité de la clé et filtre les champs expirés avant le décompte. Notez que NOEXP exclut les champs du décompte mais ne les supprime pas. Le temps de réponse est proportionnel à la taille de la clé.

Valeurs de retour

Valeur Signification
Entier Nombre de champs (peut inclure les champs expirés mais non supprimés si NOEXP n'est pas utilisé).
0 La clé n'existe pas.

Exemple

EXHLEN myhash
(integer) 2

EXHEXISTS

**Syntaxe** **EXHEXISTS key field**
Complexité temporelle O(1)
description Vérifie si un champ existe dans la clé.

Valeurs de retour

Valeur Signification
1 Le champ existe.
0 La clé ou le champ n'existe pas.

Exemple

EXHEXISTS myhash field1
(integer) 1

EXHSTRLEN

**Syntaxe** **EXHSTRLEN key field**
Complexité temporelle O(1)
description Récupère la longueur de la chaîne de valeur d'un champ.

Valeurs de retour

Valeur Signification
Entier positif La longueur de la chaîne.
0 La clé ou le champ n'existe pas.

Exemple

EXHSTRLEN myhash field1
(integer) 2

EXHKEYS

**Syntaxe** **EXHKEYS key**
Complexité temporelle O(N)
description Récupère tous les champs de la clé.

Valeurs de retour

Valeur Signification
Tableau de noms de champs La clé existe.
Tableau vide La clé n'existe pas.

Exemple

EXHMSET myhash field1 10 field2 var1
EXHKEYS myhash
1) "field1"
2) "field2"

EXHVALS

**Syntaxe** **EXHVALS key**
Complexité temporelle O(N)
description Récupère toutes les valeurs des champs de la clé.

Valeurs de retour

Valeur Signification
Tableau de valeurs La clé existe.
Tableau vide La clé n'existe pas.

Exemple

EXHMSET myhash field1 10 field2 var1
EXHVALS myhash
1) "10"
2) "var1"

EXHGETALL

**Syntaxe** **EXHGETALL key**
Complexité temporelle O(N)
description Récupère tous les champs et leurs valeurs dans la clé. La réponse alterne entre les noms de champs et les valeurs.

Valeurs de retour

Valeur Signification
Tableau de paires champ-valeur La clé existe.
Tableau vide La clé n'existe pas.

Exemple

EXHMSET myhash field1 10 field2 var1
EXHGETALL myhash
1) "field1"
2) "10"
3) "field2"
4) "var1"

EXHSCAN

**Syntaxe** **EXHSCAN key op subkey [MATCH pattern] [COUNT count]**
Complexité temporelle O(1) par appel ; O(N) pour un parcours complet
description Parcourt la clé de manière itérative et renvoie un curseur ainsi qu'un lot de paires champ-valeur. Disponible uniquement sur les instances optimisées pour la mémoire.

Options

Option description
key La clé TairHash.
op Position de départ du parcours. Consultez les valeurs valides ci-dessous.
subkey Champ de référence utilisé avec op. Ignoré lorsque op vaut ^ ou $.
MATCH pattern Filtre les résultats selon un motif d'expression régulière appliqué aux noms de champs.
COUNT count Nombre de champs à parcourir par appel. La valeur par défaut est 10. Le nombre réel de résultats peut varier en fonction de la taille de la clé et de l'application de MATCH.

Valeurs valides pour op

Valeur Position de départ
> Premier champ supérieur à subkey
>= Premier champ supérieur ou égal à subkey
< Premier champ inférieur à subkey
<= Premier champ inférieur ou égal à subkey
== Premier champ égal à subkey
^ Premier champ de la clé
$ Dernier champ de la clé

Valeurs de retour

La réponse est un tableau de deux éléments :

  1. Le champ de départ pour le prochain appel de parcours. Vide lorsque le parcours est terminé.

  2. Les champs parcourus et leurs valeurs, entrelacés sous la forme [field, value, field, value, ...].

Renvoie un tableau vide si la clé n'existe pas.

Exemple

EXHMSET myhashkey field1 val1 field2 val2 field3 val3 field4 val4 field5 val5
EXHSCAN myhashkey ^ xx COUNT 3
1) "field4"
2) 1) "field1"
   2) "val1"
   3) "field2"
   4) "val2"
   5) "field3"
   6) "val3"

Le prochain parcours commence à partir de field4. Transmettez field4 en tant que subkey avec op >= pour continuer.

EXHDEL

**Syntaxe** **EXHDEL key field [field ...]**
Complexité temporelle O(1)
description Supprime un ou plusieurs champs de la clé.

Valeurs de retour

Valeur Signification
1 Le champ a été supprimé.
0 La clé ou le champ n'existe pas.

Exemple

EXHDEL myhash field1
(integer) 1

FAQ

Pourquoi exHash utilise-t-il plus de mémoire qu'un hachage Redis standard pour les mêmes données ?

Chaque champ dans TairHash stocke des métadonnées supplémentaires — l'horodatage d'expiration et le numéro de version — qu'un hachage Redis standard ne possède pas. Ces métadonnées supplémentaires par champ sont à l'origine de la consommation mémoire plus élevée.