TairZset (exZset) étend les ensembles triés Redis en prenant en charge le scoring multidimensionnel : il permet de trier les membres selon jusqu'à 256 scores en virgule flottante double précision, avec une priorité appliquée de gauche à droite.
Présentation
Les ensembles triés Redis ne prennent en charge qu'un seul score par membre, ce qui rend complexe la mise en œuvre de classements multidimensionnels. Les solutions de contournement courantes, telles que la combinaison des scores via l'encodage IEEE 754 ou la concaténation de chaînes, entraînent une perte de précision, complexifient la logique d'encodage et de décodage, et empêchent l'incrémentation atomique des dimensions individuelles du score.
TairZset résout ces limitations grâce à une structure de données native multidimensionnelle :
Jusqu'à 256 dimensions de score par membre, formatées comme suit :
score1#score2#...#scoreNPriorité de gauche à droite : lors de la comparaison de deux membres, la première dimension est évaluée en premier ; si les valeurs sont égales, la deuxième dimension est comparée, et ainsi de suite.
Incrémentations atomiques : la commande
EXZINCRBYincrémente une dimension spécifique sans nécessiter de cycle lecture-modification-écriture.Compatibilité API : les commandes reproduisent le fonctionnement des commandes natives des ensembles triés, éliminant ainsi tout besoin de logique d'encodage ou de décodage côté client.
Classements réguliers et distribués : prend en charge les architectures de classement sur nœud unique ainsi que les architectures distribuées.
Client open source TairJedis : disponible à l'adresse TairJedis SDK ; utilisez le code source ouvert comme référence pour implémenter des clients dans d'autres langages.
Le module est open source et disponible sur TairZset sur GitHub.
Cas d'utilisation
Le scoring multidimensionnel fait de TairZset la solution idéale pour tout système de classement où une seule métrique s'avère insuffisante :
Classements de streaming en direct : classez les streamers d'abord par popularité, puis par nombre de « J'aime », puis par montant des cadeaux reçus —
popularity#likes#gift_amountTableaux des médailles : classez les concurrents par médailles d'or, puis d'argent, puis de bronze —
gold#silver#bronzeClassements de jeux vidéo : classez les joueurs par score, puis par temps d'achèvement des tâches, puis par rang du joueur —
score#completion_time#player_rank
Fonctionnement de la comparaison multidimensionnelle
TairZset compare les scores dimension par dimension, de gauche à droite. Prenons l'exemple d'un score à deux dimensions score1#score2 :
Comparaison entre
0#99,99#90et99#99: puisque0 < 99, le résultat est0#99 < 99#90 < 99#99Considérez le séparateur
#comme une virgule décimale :0.99 < 99.90 < 99.99
Si toutes les dimensions sont égales, TairZset trie les membres par ordre ASCII selon leur nom.
Prérequis
Avant de commencer, assurez-vous de disposer des éléments suivants :
Une instance Tair optimisée pour la mémoire
Pour les instances optimisées pour la mémoire compatibles avec Redis 5.0 : version mineure 1.7.1 ou ultérieure.
Mettez à jour vers la dernière version mineure pour bénéficier du plus grand nombre de fonctionnalités et d'une stabilité optimale. Consultez la rubrique Mise à jour de la version mineure d'une instance . Pour les instances en cluster ou les instances avec séparation lecture/écriture, mettez également à jour les nœuds proxy afin de garantir le bon fonctionnement de toutes les commandes.
Notes d'utilisation
Toutes les commandes TairZset s'appliquent aux données TairZset stockées dans les instances Tair. L'exécution de ces commandes sur une clé contenant un type de données différent renvoie une erreur.
Cohérence du format de score : tous les membres d'une même clé doivent utiliser le même nombre de dimensions de score. Le mélange de formats tels que
1#2#3et1#2au sein d'une même clé provoque une erreur.Format d'incrémentation : la valeur
incrementde la commandeEXZINCRBYdoit correspondre au format de dimension du score du membre cible. Pour incrémenter une seule dimension d'un score à trois dimensions, vous devez spécifier les trois dimensions (par exemple,EXZINCRBY key 0#1#0 member).Les valeurs
+infet-infsont des valeurs de score valides pour toutes les commandes basées sur des plages de scores.
Démarrage rapide
L'exemple suivant illustre la création d'un classement de streaming en direct à deux dimensions : le tri s'effectue d'abord par popularité, puis par nombre de « J'aime ».
# Add streamers with initial scores (popularity#likes)
EXZADD leaderboard 1000#500 alice 800#900 bob 1000#300 carol
# Atomically increment alice's likes without a read-modify-write cycle
EXZINCRBY leaderboard 0#100 alice
# Get the full leaderboard, highest score first
EXZREVRANGE leaderboard 0 -1 WITHSCORES
# 1) "alice"
# 2) "1000#600"
# 3) "carol"
# 4) "1000#300"
# 5) "bob"
# 6) "800#900"
# Get alice's rank (highest = rank 0)
EXZREVRANK leaderboard alice
# (integer) 0
Commandes
Le tableau ci-dessous répertorie toutes les commandes TairZset. Utilisez la commande native Redis DEL pour supprimer les clés TairZset.
| Commande | Syntaxe | Complexité | Description |
|---|---|---|---|
| EXZADD | EXZADD key [NX|XX] [CH] [INCR] score member [score member ...] |
O(M\*log(N)) | Ajoute ou met à jour des membres avec leurs scores |
| EXZINCRBY | EXZINCRBY key increment member |
O(log(N)) | Incrémente le score d'un membre |
| EXZSCORE | EXZSCORE key member |
O(1) | Récupère le score d'un membre |
| EXZRANGE | EXZRANGE key min max [WITHSCORES] |
O(log(N)+M) | Renvoie les membres selon une plage d'index, du plus faible au plus élevé |
| EXZREVRANGE | EXZREVRANGE key min max [WITHSCORES] |
O(log(N)+M) | Renvoie les membres selon une plage d'index, du plus élevé au plus faible |
| EXZRANGEBYSCORE | EXZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
O(log(N)+M) | Renvoie les membres selon une plage de scores, du plus faible au plus élevé |
| EXZREVRANGEBYSCORE | EXZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] |
O(log(N)+M) | Renvoie les membres selon une plage de scores, du plus élevé au plus faible |
| EXZRANGEBYLEX | EXZRANGEBYLEX key min max [LIMIT offset count] |
O(log(N)+M) | Renvoie les membres selon une plage lexicographique |
| EXZREVRANGEBYLEX | EXZREVRANGEBYLEX key max min [LIMIT offset count] |
O(log(N)+M) | Renvoie les membres selon une plage lexicographique, dans l'ordre inverse |
| EXZREM | EXZREM key member [member ...] |
O(M\*log(N)) | Supprime des membres |
| EXZREMRANGEBYSCORE | EXZREMRANGEBYSCORE key min max |
O(log(N)+M) | Supprime les membres selon une plage de scores |
| EXZREMRANGEBYRANK | EXZREMRANGEBYRANK key start stop |
O(log(N)+M) | Supprime les membres selon une plage de rangs |
| EXZREMRANGEBYLEX | EXZREMRANGEBYLEX key min max |
O(log(N)+M) | Supprime les membres selon une plage lexicographique |
| EXZCARD | EXZCARD key |
O(1) | Renvoie le nombre de membres |
| EXZRANK | EXZRANK key member |
O(log(N)) | Renvoie le rang d'un membre, du plus faible au plus élevé |
| EXZREVRANK | EXZREVRANK key member |
O(log(N)) | Renvoie le rang d'un membre, du plus élevé au plus faible |
| EXZCOUNT | EXZCOUNT key min max |
O(log(N)) | Compte les membres dans une plage de scores |
| EXZLEXCOUNT | EXZLEXCOUNT key min max |
O(log(N)) | Compte les membres dans une plage lexicographique |
| EXZRANKBYSCORE | EXZRANKBYSCORE key score |
O(log(N)) | Renvoie le rang d'un score, du plus faible au plus élevé |
| EXZREVRANKBYSCORE | EXZREVRANKBYSCORE key score |
O(log(N)) | Renvoie le rang d'un score, du plus élevé au plus faible |
| DEL | DEL key [key ...] |
— | Supprime une ou plusieurs clés TairZset |
Conventions syntaxiques utilisées dans cette rubrique :
MOT_CLÉ_MAJUSCULE: mot-clé de commande_italique_: variable[option]: paramètre facultatifA|B: options mutuellement exclusives (choisissez-en une)...: le paramètre précédent peut être répété
EXZADD
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZADD key [NX|XX] [CH] [INCR] score member [score member ...] |
| Complexité | O(M\*log(N)), où N représente le nombre de membres dans la clé et M le nombre de membres ajoutés ou mis à jour |
| Description | Ajoute des membres avec leurs scores à une clé TairZset, ou met à jour les scores des membres existants. |
Comportement :
Si la clé n'existe pas, elle est créée.
Si un membre n'existe pas, il est ajouté avec le score indiqué.
Si un membre existe déjà, son score est écrasé (sauf si l'option
NXest spécifiée).Chaque score est une représentation sous forme de chaîne d'un nombre en virgule flottante double précision. Les valeurs
+infet-infsont valides.
Pour utiliser le scoring multidimensionnel, séparez chaque dimension par le caractère#, par exemple111#222#121. Tous les membres de la clé doivent utiliser le même nombre de dimensions.
Options :
| Option | Description |
|---|---|
NX |
Ajoute uniquement les nouveaux membres ; ignore les membres existants |
XX |
Met à jour uniquement les membres existants ; ignore les nouveaux membres |
CH |
Modifie la valeur de retour : au lieu du nombre de membres nouvellement ajoutés, renvoie le nombre total de membres modifiés (ajoutés ou dont le score a été mis à jour) |
INCR |
Traite le score comme une incrémentation, faisant fonctionner EXZADD comme la commande EXZINCRBY. Seul un couple score-membre est autorisé dans ce mode. |
Valeur de retour :
Sans option : le nombre de membres nouvellement ajoutés (les membres dont seul le score a été mis à jour ne sont pas comptés)
Avec l'option
CH: le nombre de membres ajoutés ou dont le score a changéAvec l'option
INCR: le nouveau score du membre sous forme de chaîne (par exemple,"2#0#6"); renvoienilsi l'opération est ignorée en raison des optionsNXouXX
Exemple :
EXZADD testkey NX 1#0#3 a 1#0#2 b
(integer) 2
EXZINCRBY
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZINCRBY key increment member |
| Complexité | O(log(N)) |
| Description | Incrémente le score d'un membre dans une clé TairZset. |
Comportement :
Si la clé ou le membre n'existe pas, les deux sont créés et le score est défini sur la valeur
increment.Si le membre existe, son score est incrémenté de la valeur
increment.Chaque dimension de score est un nombre en virgule flottante double précision. Les valeurs
+infet-infsont valides.Pour décrémenter un score, passez une valeur
incrementnégative.
Pour les scores multidimensionnels, le paramètreincrementdoit utiliser le même format que le score du membre. Par exemple, pour incrémenter uniquement la deuxième dimension d'un score à trois dimensions, utilisez0#1#0.
Valeur de retour : le nouveau score du membre sous forme de chaîne. Pour les scores multidimensionnels, le format est "score1#score2#..." (par exemple, "2#0#6").
Exemple :
EXZINCRBY testkey 2#2#1 a
"3#2#4"
EXZSCORE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZSCORE key member |
| Complexité | O(1) |
| Description | Renvoie le score d'un membre dans une clé TairZset. Renvoie nil si la clé ou le membre n'existe pas. |
Valeur de retour : le score du membre sous forme de chaîne. Pour les scores multidimensionnels, le format est "score1#score2#..." (par exemple, "3#2#4").
Exemple :
EXZSCORE testkey a
"3#2#4"
EXZRANGE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZRANGE key min max [WITHSCORES] |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres renvoyés |
| Description | Renvoie les membres situés dans une plage d'index, triés par score du plus faible au plus élevé. |
Options :
| Option | Description |
|---|---|
min, max |
Valeurs d'index basées sur zéro. -1 correspond au dernier membre, -2 à l'avant-dernier, etc. Pour renvoyer tous les membres, utilisez 0 et -1. Renvoie une liste vide si min dépasse le dernier index ou est supérieur à max. |
WITHSCORES |
Inclut les scores dans la réponse. Le format alterne membre et score : member1, score1, member2, score2, ... |
Return value: une liste des membres situés dans la plage spécifiée, avec leurs scores si l'option WITHSCORES est indiquée.
Exemple :
EXZRANGE testkey 0 -1 WITHSCORES
1) "b"
2) "1#0#2"
3) "a"
4) "3#2#4"
EXZREVRANGE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREVRANGE key min max [WITHSCORES] |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres renvoyés |
| Description | Renvoie les membres situés dans une plage d'index, triés par score du plus élevé au plus faible. Les membres ayant le même score sont triés dans l'ordre lexicographique inverse. Identique à la commande EXZRANGE, à l'exception du sens du tri. |
Options :
| Option | Description |
|---|---|
min, max |
Valeurs d'index basées sur zéro. -1 correspond au membre ayant le score le plus faible, -2 au deuxième plus faible, etc. Pour renvoyer tous les membres, utilisez 0 et -1. |
WITHSCORES |
Inclut les scores dans la réponse. |
Return value: une liste des membres situés dans la plage spécifiée, avec leurs scores si l'option WITHSCORES est indiquée.
Exemple :
EXZREVRANGE testkey 0 -1 WITHSCORES
1) "a"
2) "3#2#4"
3) "b"
4) "1#0#2"
EXZRANGEBYSCORE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres renvoyés. Lorsque M est constant (par exemple, en utilisant LIMIT pour toujours renvoyer les 10 premiers membres), la complexité est O(log(N)). |
| Description | Renvoie tous les membres dont les scores sont compris entre min et max, triés du plus faible au plus élevé. Les membres ayant le même score sont triés dans l'ordre lexicographique. |
Options :
| Option | Description |
|---|---|
min, max |
Scores minimum et maximum. Pour les scores multidimensionnels, utilisez # comme séparateur. Utilisez -inf et +inf lorsque les limites de score sont inconnues. Par défaut, la plage est un intervalle fermé (min <= score <= max). Préfixez une valeur avec ( pour définir un intervalle ouvert — par exemple, (1 5 renvoie les membres dont les scores sont strictement supérieurs à 1 et inférieurs ou égaux à 5. |
WITHSCORES |
Inclut les scores dans la réponse. |
LIMIT offset count |
Limite le résultat à count membres à partir de offset. Si count est négatif, tous les membres à partir de offset sont renvoyés. Une valeur offset élevée augmente la complexité temporelle, car TairZset doit parcourir la clé pour atteindre cette position. |
Return value: une liste des membres situés dans la plage de scores, avec leurs scores si l'option WITHSCORES est indiquée.
Exemple :
EXZRANGEBYSCORE testkey 0#0#0 6#6#6 WITHSCORES
1) "b"
2) "1#0#2"
3) "a"
4) "3#2#4"
EXZREVRANGEBYSCORE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres renvoyés. Lorsque M est constant (par exemple, en utilisant LIMIT pour toujours renvoyer les 10 premiers membres), la complexité est O(log(N)). |
| Description | Renvoie tous les membres dont les scores sont compris entre min et max, triés du plus élevé au plus faible. Les membres ayant le même score sont triés dans l'ordre lexicographique inverse. Similaire à la commande EXZRANGEBYSCORE, mais dans l'ordre inverse. Notez que max précède min dans la syntaxe. |
Options :
| Option | Description |
|---|---|
max, min |
Scores maximum et minimum (notez l'ordre inversé des arguments). Pour les scores multidimensionnels, utilisez # comme séparateur. Utilisez -inf et +inf lorsque les limites de score sont inconnues. Préfixez une valeur avec ( pour définir un intervalle ouvert. |
WITHSCORES |
Inclut les scores dans la réponse. |
LIMIT offset count |
Limite le résultat à count membres à partir de offset. Une valeur offset élevée augmente la complexité temporelle. |
Return value: une liste des membres situés dans la plage de scores, avec leurs scores si l'option WITHSCORES est indiquée.
Exemple :
EXZREVRANGEBYSCORE testkey 6#6#6 0#0#0 WITHSCORES
1) "a"
2) "3#2#4"
3) "b"
4) "1#0#2"
EXZRANGEBYLEX
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZRANGEBYLEX key min max [LIMIT offset count] |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres renvoyés. Lorsque M est constant, la complexité est O(log(N)). |
| Description | Renvoie les membres dont les noms se situent entre min et max dans l'ordre lexicographique. Tous les membres de la clé doivent avoir le même score pour que les résultats soient prévisibles. |
Si les membres ont des scores différents, l'ensemble renvoyé est indéfini. La comparaison lexicographique utilise la fonction C memcmp() , qui compare les octets un par un. Si deux chaînes partagent un préfixe commun, la chaîne la plus longue obtient un rang supérieur.
Options :
| Option | Description |
|---|---|
min, max |
Limites des noms de membres. Préfixez avec [ pour un intervalle fermé (par exemple, [a) ou avec ( pour un intervalle ouvert (par exemple, (a). Utilisez - pour l'infini négatif (la plus petite chaîne) et + pour l'infini positif (la plus grande chaîne). |
LIMIT offset count |
Limite le résultat à count membres à partir de offset. Une valeur offset élevée augmente la complexité temporelle. |
Return value: une liste des membres situés dans la plage lexicographique.
Exemple :
EXZRANGEBYLEX zzz [a [b
1) "aba"
2) "abc"
EXZREVRANGEBYLEX
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREVRANGEBYLEX key max min [LIMIT offset count] |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres renvoyés. Lorsque M est constant, la complexité est O(log(N)). |
| Description | Renvoie les membres situés dans la plage lexicographique entre max et min, dans l'ordre inverse. Identique à la commande EXZRANGEBYLEX, mais dans l'ordre inverse. Notez que max précède min dans la syntaxe. |
Options :
| Option | Description |
|---|---|
max, min |
Limites des noms de membres (notez l'ordre inversé des arguments). Préfixez avec [ pour un intervalle fermé ou avec ( pour un intervalle ouvert. Utilisez - et + respectivement pour l'infini négatif et l'infini positif. |
LIMIT offset count |
Limite le résultat à count membres à partir de offset. Une valeur offset élevée augmente la complexité temporelle. |
Return value: une liste des membres situés dans la plage lexicographique, dans l'ordre inverse.
Exemple :
EXZREVRANGEBYLEX zzz [b [a
1) "abc"
2) "aba"
EXZREM
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREM key member [member ...] |
| Complexité | O(M\*log(N)), où N représente le nombre de membres et M le nombre de membres à supprimer |
| Description | Supprime les membres spécifiés d'une clé TairZset. Les membres inexistants sont ignorés silencieusement. Renvoie une erreur si la clé existe mais contient un type de données différent. |
Valeur de retour : le nombre de membres supprimés (sans compter les membres inexistants).
Exemple :
EXZREM testkey a
(integer) 1
EXZREMRANGEBYSCORE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREMRANGEBYSCORE key min max |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres supprimés |
| Description | Supprime tous les membres dont les scores sont compris entre min et max, bornes incluses. |
Options :
| Option | Description |
|---|---|
min, max |
Limites de score. Pour les scores multidimensionnels, utilisez # comme séparateur. Utilisez -inf et +inf lorsque les limites sont inconnues. Préfixez avec ( pour définir un intervalle ouvert — par exemple, EXZREMRANGEBYSCORE key (1 5 supprime les membres dont les scores sont strictement supérieurs à 1 et inférieurs ou égaux à 5. |
Valeur de retour : le nombre de membres supprimés.
Exemple :
EXZREMRANGEBYSCORE testkey 3#2#4 6#6#6
(integer) 1
EXZREMRANGEBYRANK
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREMRANGEBYRANK key start stop |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres supprimés |
| Description | Supprime tous les membres dont les rangs sont compris entre start et stop. |
Options :
| Option | Description |
|---|---|
start, stop |
Valeurs de rang basées sur zéro, où 0 correspond au membre ayant le score le plus faible. Les valeurs négatives comptent à partir du score le plus élevé : -1 correspond au membre ayant le score le plus élevé, -2 au deuxième plus élevé, etc. |
Valeur de retour : le nombre de membres supprimés.
Exemple :
EXZREMRANGEBYRANK testkey 0 1
(integer) 1
EXZREMRANGEBYLEX
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREMRANGEBYLEX key min max |
| Complexité | O(log(N)+M), où N représente le nombre de membres et M le nombre de membres supprimés |
| Description | Supprime les membres dont les noms se situent entre min et max dans l'ordre lexicographique. Tous les membres doivent avoir le même score pour que les résultats soient prévisibles. Supprime les mêmes membres que ceux qui seraient renvoyés par la commande EXZRANGEBYLEX avec les mêmes valeurs min et max. |
Options :
| Option | Description |
|---|---|
min, max |
Limites des noms de membres. Préfixez avec [ pour un intervalle fermé ou avec ( pour un intervalle ouvert. |
Valeur de retour : le nombre de membres supprimés.
Exemple :
EXZREMRANGEBYLEX testkey [a [b
(integer) 2
EXZCARD
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZCARD key |
| Complexité | O(1) |
| Description | Renvoie le nombre de membres dans une clé TairZset. Renvoie 0 si la clé n'existe pas. |
Valeur de retour : le nombre de membres (entier).
Exemple :
EXZCARD testkey
(integer) 2
EXZRANK
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZRANK key member |
| Complexité | O(log(N)) |
| Description | Renvoie le rang d'un membre, le rang 0 étant attribué au membre ayant le score le plus faible (ordre croissant). |
Valeur de retour :
Le rang du membre (entier) si le membre existe
nilsi la clé ou le membre n'existe pas
Exemple :
EXZRANK testkey b
(integer) 0
EXZREVRANK
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREVRANK key member |
| Complexité | O(log(N)) |
| Description | Renvoie le rang d'un membre, le rang 0 étant attribué au membre ayant le score le plus élevé (ordre décroissant). Identique à la commande EXZRANK, mais dans l'ordre inverse. |
Valeur de retour :
Le rang du membre (entier) si le membre existe
nilsi la clé ou le membre n'existe pas
Exemple :
EXZREVRANK testkey b
(integer) 1
EXZCOUNT
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZCOUNT key min max |
| Complexité | O(log(N)), où N représente le nombre de membres. Le travail effectué est proportionnel au nombre d'éléments parcourus au niveau de l'index, et non à la taille de la plage de scores. |
| Description | Renvoie le nombre de membres dont les scores sont compris entre min et max. |
Options :
| Option | Description |
|---|---|
min, max |
Limites de score. Pour les scores multidimensionnels, utilisez # comme séparateur. Utilisez -inf et +inf pour les requêtes non bornées. Préfixez avec ( pour définir un intervalle ouvert — par exemple, (1 5 compte les membres dont les scores sont strictement supérieurs à 1 et inférieurs ou égaux à 5. |
Valeur de retour : le nombre de membres situés dans la plage de scores (entier).
Exemple :
EXZCOUNT testkey (1#0#2 6#6#6
(integer) 1
EXZLEXCOUNT
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZLEXCOUNT key min max |
| Complexité | O(log(N)), où N représente le nombre de membres. Le travail effectué est proportionnel au nombre d'éléments parcourus au niveau de l'index. |
| Description | Renvoie le nombre de membres dont les noms se situent entre min et max dans l'ordre lexicographique. Tous les membres doivent avoir le même score pour que les résultats soient prévisibles. |
Si les membres ont des scores différents, le résultat est indéfini. La comparaison lexicographique utilise la fonction C memcmp() . Si deux chaînes partagent un préfixe commun, la chaîne la plus longue obtient un rang supérieur.
Options :
| Option | Description |
|---|---|
min, max |
Limites des noms de membres. Préfixez avec [ pour un intervalle fermé ou avec ( pour un intervalle ouvert. |
Valeur de retour : le nombre de membres situés dans la plage lexicographique (entier).
Exemple :
EXZLEXCOUNT zzz [a [b
(integer) 2
EXZRANKBYSCORE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZRANKBYSCORE key score |
| Complexité | O(log(N)) |
| Description | Renvoie le rang qu'occuperait un score donné dans la clé, trié du plus faible au plus élevé (rang 0 = score le plus faible). Si le score n'existe pas, renvoie son rang estimé. Si le score existe déjà, le rang est calculé comme si le nouveau score était inséré avant l'existant. |
Valeur de retour : le rang du score spécifié (entier).
Exemple :
EXZRANKBYSCORE testkey 2#0#2
(integer) 1
EXZREVRANKBYSCORE
| Catégorie | Détails |
|---|---|
| Syntaxe | EXZREVRANKBYSCORE key score |
| Complexité | O(log(N)) |
| Description | Renvoie le rang qu'occuperait un score donné dans la clé, trié du plus élevé au plus faible (rang 0 = score le plus élevé). Si le score n'existe pas, renvoie son rang estimé. Si le score existe déjà, le rang est calculé comme si le nouveau score était inséré après l'existant. |
Valeur de retour : le rang du score spécifié (entier).
Exemple :
EXZREVRANKBYSCORE testkey 2#0#2
(integer) 1