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 :
-
Une instance Tair de l'un des types suivants :
Optimisée pour la mémoire persistante (version mineure 1.2.6 ou ultérieure)
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 utilisezKEEPTTL). Pour définir une expiration sur la clé elle-même, utilisez la commande nativeEXPIREouEXPIREAT.
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 nativeEXPIREouEXPIREAT.
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 :
Le champ de départ pour le prochain appel de parcours. Vide lorsque le parcours est terminé.
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.