TairRoaring est une structure de données Tair dédiée aux bitmaps Roaring. Cette rubrique présente TairRoaring ainsi que les commandes qu'il prend en charge.
Présentation de TairRoaring
Le bitmap (également appelé bitset) est une structure de données courante qui optimise les requêtes sur de grands volumes de données tout en occupant peu d'espace mémoire. Les bitmaps consomment moins d'espace que les implémentations basées sur des tables de hachage, mais ils ne conviennent pas au stockage de données clairsemées. Les bitmaps compressés ont été développés pour répondre à cette problématique. Les bitmaps Roaring constituent un type de bitmap reconnu par l'industrie, offrant un meilleur équilibre et une plus grande efficacité que les autres formats de bitmaps compressés.
TairRoaring optimise les bitmaps Roaring de plusieurs manières :
Grâce à l'utilisation d'index à deux niveaux et de conteneurs dynamiques, TairRoaring parvient à équilibrer les performances et la complexité spatiale dans de nombreux scénarios.
TairRoaring intègre des techniques d'optimisation telles que le traitement SIMD (Single Instruction, Multiple Data), la vectorisation et les algorithmes popcount. Ces améliorations accroissent l'efficacité du calcul et garantissent une complexité temporelle et spatiale optimale.
TairRoaring s'appuie sur la puissance de calcul et la stabilité élevée offertes par Tair pour répondre aux exigences des scénarios métier.
Scénarios typiques
TairRoaring convient particulièrement aux secteurs du streaming en direct, de la musique et du commerce électronique. Vous pouvez l'utiliser pour ajouter des tags multidimensionnels aux utilisateurs, afin de mettre en place des recommandations personnalisées ou des campagnes de marketing ciblé.
Notes de version
Évolutions apportées par TairRoaring V2 :
TR.RANGEINTARRAY : la commande TR.RANGEINTARRAY de TairRoaring V1 devient TR.RANGE dans TairRoaring V2.
TR.SETRANGE : dans la version V1, cette commande renvoie
OK; dans la version V2, elle retourne le nombre de bits définis à 1. Le reste du comportement de la commande demeure inchangé.
Le 13 septembre 2021, TairRoaring V1 a été publié pour les instances exécutant la version mineure 1.7.20 ou ultérieure.
-
Le 11 mars 2022, TairRoaring V2 a été publié pour les instances exécutant la version mineure 1.7.27 ou ultérieure.
TairRoaring V2 optimise l'implémentation de certaines commandes et améliore leurs performances. Cette version introduit neuf nouvelles commandes, dont TR.SETBITS et TR.CLEARBITS, met à jour trois commandes (dont deux restent compatibles avec TairRoaring V1) et renomme une commande.
-
Le 20 avril 2022, TairRoaring V2.2 a été publié pour les instances exécutant la version mineure 1.8.1 ou ultérieure.
Cette version ajoute les commandes TR.JACCARD, TR.CONTAINS et TR.RANK, et modifie les erreurs renvoyées par certaines commandes lorsqu'une clé n'existe pas (l'erreur
ERR key not foundest supprimée).
Bonnes pratiques
Segmentation d'audience avec TairRoaring
Prérequis
L'instance doit être une instance Tair optimisée pour la mémoire. Si votre instance optimisée pour la mémoire est compatible avec Redis 5.0, sa version mineure doit être égale ou supérieure à 1.7.7.
La dernière version mineure offre davantage de fonctionnalités et une stabilité accrue. Nous vous recommandons de mettre à jour votre instance vers la dernière version mineure. Pour plus d'informations, consultez la rubrique Mettre à jour la version mineure d'une instance. Si votre instance est configurée en mode cluster ou en lecture/écriture séparée, nous vous conseillons également de mettre à jour les nœuds proxy vers la dernière version mineure afin de garantir le bon fonctionnement de toutes les commandes.
Remarques importantes
Les opérations décrites s'appliquent aux données TairRoaring stockées dans une instance Tair.
Liste des commandes
|
Type |
Commande |
Syntaxe |
Description |
Évolution de version |
|
Opération d'écriture |
|
Définit la valeur d'un bit spécifique d'une clé TairRoaring à 1 ou 0, et renvoie la valeur originale du bit. L'offset commence à 0. |
- (S/O) |
|
|
|
Définit la valeur des bits spécifiés d'une clé TairRoaring à 1. Vous pouvez indiquer plusieurs positions de bits. |
Ajoutée dans la version V2 |
||
|
|
Définit la valeur des bits spécifiés d'une clé TairRoaring à 0. Si le bit indiqué vaut déjà 0, l'opération n'est pas effectuée. Vous pouvez spécifier plusieurs positions de bits. |
Ajoutée dans la version V2 |
||
|
|
Définit tous les bits compris dans une plage donnée d'une clé TairRoaring à 1. La plage est un intervalle fermé. |
Mise à jour dans la version V2. Après cette mise à jour, la commande renvoie le nombre de bits définis à 1. |
||
|
|
Insère un tableau de bits après la position spécifiée dans un bitmap Roaring, en écrasant les données originales. Le tableau de bits est composé de 0 et de 1. |
Ajoutée dans la version V2 |
||
|
|
Inverse les valeurs des bits situés dans la plage spécifiée d'une clé TairRoaring (0 devient 1, et 1 devient 0). La plage est un intervalle fermé. Si la clé n'existe pas, elle est créée comme un ensemble de données vide avant l'exécution de l'opération. |
Ajoutée dans la version V2 |
||
|
|
Définit la valeur des bits spécifiés d'une clé TairRoaring à 1. Vous pouvez indiquer plusieurs positions de bits. Remarque
Dans TairRoaring V2, nous vous recommandons d'utiliser TR.SETBITS plutôt que cette commande. |
- |
||
|
|
Crée une clé TairRoaring à partir du tableau d'entiers fourni. Si la clé existe déjà, cette commande écrase les données qu'elle contient. Remarque
Dans TairRoaring V2, nous vous recommandons d'utiliser TR.SETBITS plutôt que cette commande. |
- |
||
|
|
Crée une clé TairRoaring à partir de la chaîne de bits fournie (composée de 0 et de 1). Si la clé existe déjà, cette commande écrase les données qu'elle contient. Remarque
Dans TairRoaring V2, nous vous recommandons d'utiliser TR.APPENDBITARRAY plutôt que cette commande. |
- |
||
|
|
Effectue des opérations ensemblistes sur des bitmaps Roaring et stocke le résultat dans la clé destkey. Les opérations AND, OR, XOR, NOT et DIFF sont prises en charge. Remarque
Cette commande n'est pas disponible pour les clés réparties sur différents slots dans les instances cluster. |
- |
||
|
|
Effectue une opération bit à bit sur plusieurs clés TairRoaring. Les opérations bit à bit AND, OR, XOR, NOT et DIFF sont prises en charge. Remarque
Cette commande n'est pas disponible pour les clés réparties sur différents slots dans les instances cluster. |
Ajoutée dans la version V2 |
||
|
|
Optimise le stockage d'une clé TairRoaring. Utilisez cette commande si la clé est relativement volumineuse et destinée principalement à des opérations de lecture après sa création. |
- |
||
|
Opération de lecture |
|
Récupère la valeur du bit spécifié dans une clé TairRoaring. |
- |
|
|
|
Récupère la valeur des bits spécifiés dans une clé TairRoaring. Vous pouvez indiquer plusieurs positions de bits. |
Ajoutée dans la version V2 |
||
|
|
Compte le nombre de bits définis à 1 dans la plage spécifiée d'une clé TairRoaring. La plage est un intervalle fermé. |
Mise à jour dans la version V2 et rétrocompatible. |
||
|
|
Récupère l'offset du bit dont le rang ordinal correspond à la valeur count. Un bit peut valoir 1 ou 0. Le paramètre count est facultatif et vaut 1 par défaut. Une valeur de 1 indique le premier bit trouvé selon un parcours de gauche à droite. |
Mise à jour dans la version V2 et rétrocompatible. |
||
|
|
Parcourt tous les bits situés après une position donnée dans une clé TairRoaring, et renvoie les offsets correspondant à un nombre donné de bits valant 1. Le curseur renvoyé correspond à l'offset associé à la clé. Remarque
Cette commande peut inclure ou exclure les éléments ajoutés ou supprimés lors du parcours. |
Ajoutée dans la version V2 |
||
|
|
Renvoie les offsets des bits valant 1 dans la plage spécifiée d'une clé TairRoaring. La plage est un intervalle fermé. |
Renommée TR.RANGE dans la version V2 (auparavant TR.RANGEINTARRAY dans la version V1). |
||
|
|
Récupère une chaîne composée des valeurs de bits (0 et 1) situés dans la plage spécifiée d'une clé TairRoaring. La plage est un intervalle fermé. |
Ajoutée dans la version V2 |
||
|
|
Récupère l'offset du premier bit valant 1 dans une clé TairRoaring. Si aucun bit ne vaut 1, la commande renvoie -1. |
- |
||
|
|
Récupère l'offset du dernier bit valant 1 dans un bitmap Roaring. Si aucun bit ne vaut 1, la commande renvoie -1. |
- |
||
|
|
Renvoie les informations statistiques relatives à la clé TairRoaring spécifiée, notamment le nombre de conteneurs et l'utilisation mémoire. |
Ajoutée dans la version V2 |
||
|
|
Calcule le coefficient de similarité de Jaccard entre deux clés TairRoaring. Plus le coefficient est élevé, plus la similarité est forte. Remarque
Cette commande n'est pas disponible pour les clés réparties sur différents slots dans les instances cluster. |
Ajoutée dans la version V2.2 |
||
|
|
Vérifie si key2 contient key1. Si c'est le cas, key1 est un sous-ensemble de key2 et la commande renvoie 1. Sinon, key1 n'est pas un sous-ensemble de key2 et la commande renvoie 0. Remarque
Cette commande n'est pas disponible pour les clés réparties sur différents slots dans les instances cluster. |
Ajoutée dans la version V2.2 |
||
|
|
Récupère le nombre de bits valant 1 compris entre le premier bit et le bit spécifié. La plage est un intervalle fermé. |
Ajoutée dans la version V2.2 |
||
|
Opération générique |
|
Supprime une ou plusieurs clés TairRoaring. |
- |
-
La section suivante décrit la syntaxe des commandes :
Mot-clé en majuscules: indique un mot-clé de commande.Texte en italique : indique une variable.
[options]: indique que les paramètres entre crochets sont facultatifs. Les paramètres non entourés de crochets sont obligatoires.A|B: indique que les paramètres séparés par une barre verticale (|) s'excluent mutuellement. Vous ne pouvez spécifier qu'un seul de ces paramètres....: indique que le paramètre précédant ce symbole peut être répété.
-
Dans cette rubrique, les lettres utilisées dans les expressions de complexité temporelle ont les significations suivantes :
C représente argc ou la plage de paramètres.
M représente le nombre de bits définis à 1 dans une structure de données, par exemple le nombre de nœuds dans une liste ou le nombre de champs dans un hash.
TR.SETBIT
|
Catégorie |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(1) |
|
Description de la commande |
Définit la valeur d'un bit spécifique d'une clé TairRoaring à 1 ou 0, et renvoie la valeur originale du bit. L'offset commence à 0. |
|
Paramètre |
|
|
Sortie |
|
|
Exemple |
Exemple de commande :
Exemple de sortie :
|
TR.SETBITS
|
Élément |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Définit la valeur des bits spécifiés d'une clé TairRoaring à 1. Vous pouvez indiquer plusieurs positions de bits. |
|
Options |
|
|
Sortie |
|
|
Exemple |
Exemple de commande :
Exemple de sortie :
|
TR.CLEARBITS
|
Élément |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Définit la valeur des bits spécifiés d'une clé TairRoaring à 0. Si le bit indiqué vaut déjà 0, l'opération n'est pas effectuée. Vous pouvez spécifier plusieurs positions de bits. |
|
Paramètre |
|
|
Sortie |
|
|
Exemple |
Exemple de commande :
Exemple de sortie :
|
TR.SETRANGE
|
Élément |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Définit tous les bits compris dans une plage donnée d'une clé TairRoaring à 1. La plage est un intervalle fermé. Par exemple, si vous exécutez la commande |
|
Options |
|
|
Sortie |
|
|
Exemple |
Exemple de commande :
Exemple de sortie :
|
TR.APPENDBITARRAY
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Insère un tableau de bits à une position située après le bit spécifié dans un Roaring Bitmap et écrase les données d'origine. Le tableau de bits est composé de 0 et de 1. |
|
Paramètre |
|
|
Sortie |
|
|
Exemple |
Exécutez au préalable la commande Exemple de commande :
Exemple de sortie :
Dans ce cas, la clé TairRoaring foo est « 101101 ». |
TR.FLIPRANGE
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Inverse les valeurs des bits dans la plage spécifiée d'une clé TairRoaring, en passant de 0 à 1 ou de 1 à 0. La plage constitue un intervalle fermé. Si la clé n'existe pas, elle est créée en tant qu'ensemble de données vide et l'opération est effectuée sur cette clé. |
|
Paramètre |
|
|
Sortie |
|
|
Exemple |
Exécutez au préalable la commande Exemple de commande :
Exemple de sortie :
Dans ce cas, la clé TairRoaring foo est « 01001 ». |
TR.APPENDINTARRAY
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Définit la valeur du bit spécifié dans une clé TairRoaring sur 1. Vous pouvez spécifier plusieurs valeurs de bits. Remarque
Dans TairRoaring V2, nous vous recommandons d'utiliser TR.SETBITS plutôt que cette commande. |
|
Paramètre |
|
|
Sortie |
|
|
Exemple |
Exemple de commande :
Exemple de sortie :
|
TR.SETINTARRAY
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Crée une clé TairRoaring basée sur le tableau d'entiers spécifié. Si la clé existe déjà, cette commande écrase les données qu'elle contient. Remarque
Dans TairRoaring V2, nous vous recommandons d'utiliser TR.SETBITS plutôt que cette commande. |
|
Paramètre |
|
|
Sortie |
|
|
Exemple |
Exemple de commande :
Exemple de sortie :
|
TR.SETBITARRAY
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Crée une clé TairRoaring basée sur la chaîne de tableau de bits spécifiée. La chaîne de tableau de bits est composée de 0 et de 1. Si la clé existe déjà, cette commande écrase les données qu'elle contient. Remarque
Dans TairRoaring V2, nous vous recommandons d'utiliser TR.APPENDBITARRAY plutôt que cette commande. |
|
Paramètre |
|
|
Sortie |
|
|
Exemple |
Exemple de commande :
Exemple de sortie :
|
TR.BITOP
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C * M) |
|
Description de la commande |
Exécute des opérations ensemblistes sur des Roaring Bitmaps et stocke le résultat dans la clé de destination (destkey). Cette commande prend en charge les opérations AND, OR, XOR, NOT et DIFF. Remarque
Cette commande n'est pas disponible pour les clés réparties sur plusieurs slots dans les instances de cluster. |
|
Options |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.BITOPCARD
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C * M) |
|
Description de la commande |
Effectue une opération bit à bit sur plusieurs clés TairRoaring. Les opérations bit à bit AND, OR, XOR, NOT et DIFF sont prises en charge. Remarque
Cette commande n'est pas disponible pour les clés réparties sur plusieurs slots dans les instances de cluster. |
|
Options |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.OPTIMIZE
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(M) |
|
Description de la commande |
Optimise le stockage d'une clé TairRoaring. Utilisez cette commande si la clé est relativement volumineuse et principalement utilisée pour des opérations de lecture après sa création. |
|
Options |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.GETBIT
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(1) |
|
Description de la commande |
Récupère la valeur du bit spécifié à partir d'une clé TairRoaring. |
|
Options |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.GETBITS
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Récupère la valeur des bits spécifiés à partir d'une clé TairRoaring. Vous pouvez spécifier plusieurs bits pour la récupération des valeurs. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.BITCOUNT
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(M) |
|
Description de la commande |
Compte le nombre de bits définis à 1 dans la plage spécifiée d'une clé TairRoaring. La plage est un intervalle fermé. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.BITPOS
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Récupère le décalage du bit dont le numéro ordinal correspond à count. Un bit peut avoir une valeur de 1 ou 0. Le paramètre count est facultatif et sa valeur par défaut est 1. Une valeur de 1 indique le premier bit récupéré selon l'approche de comptage de gauche à droite. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.SCAN
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Analyse tous les bits situés après un bit spécifié dans une clé TairRoaring et renvoie les décalages correspondant à un nombre donné de bits analysés ayant une valeur de 1. Le curseur renvoyé correspond au décalage associé à la clé. Remarque
Cette commande peut analyser et renvoyer, ou non, les éléments ajoutés ou supprimés. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.RANGE
|
Catégorie |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Renvoie les décalages des bits ayant une valeur de 1 dans la plage spécifiée d'une clé TairRoaring. La plage est un intervalle fermé. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exécutez au préalable la commande Exemple de commande :
Exemple de résultat :
|
TR.RANGEBITARRAY
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(C) |
|
Description de la commande |
Récupère une chaîne composée de valeurs de bits 0 et 1 dans la plage spécifiée d'une clé TairRoaring. La plage est un intervalle fermé. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exécutez au préalable la commande Exemple de commande :
Exemple de résultat :
|
TR.MIN
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(1) |
|
Description de la commande |
Récupère le décalage du premier bit ayant une valeur de 1 dans une clé TairRoaring. Si aucun bit n'a la valeur 1, la commande renvoie -1. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.MAX
|
Item |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(1) |
|
Description de la commande |
Récupère le décalage du dernier bit ayant une valeur de 1 dans un Roaring Bitmap. Si aucun bit n'a la valeur 1, la commande renvoie -1. |
|
Options |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.STAT
|
Élément |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(M) |
|
Description de la commande |
Renvoie les informations statistiques relatives à la clé TairRoaring spécifiée. Ces informations incluent le nombre de conteneurs et l'utilisation de la mémoire. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.JACCARD
|
Élément |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(M) |
|
Description de la commande |
Récupère le coefficient de similarité de Jaccard de deux clés TairRoaring. Plus le coefficient est élevé, plus la similarité est grande. Remarque
Cette commande n'est pas disponible pour les clés situées dans différents slots sur les instances en cluster. |
|
Paramètre |
|
|
Résultat |
|
|
Exemple |
Exemple de commande :
Exemple de résultat :
|
TR.CONTAINS
|
Catégorie |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(M) |
|
Description de la commande |
Vérifie si key2 contient key1. Si c'est le cas, key1 est un sous-ensemble de key2 et la valeur 1 est renvoyée. Sinon, key1 n'est pas un sous-ensemble de key2 et la valeur 0 est renvoyée. Remarque
Cette commande n'est pas disponible pour les clés situées dans différents slots sur les instances en cluster. |
|
Options |
|
|
Résultat |
|
|
Exemple |
Exécutez au préalable les commandes Exemple de commande :
Exemple de résultat :
|
TR.RANK
|
Élément |
Description |
|
Syntaxe |
|
|
Complexité temporelle |
O(M) |
|
Description de la commande |
Récupère le nombre de bits ayant la valeur 1 dans la plage allant du premier bit au bit spécifié. La plage constitue un intervalle fermé. |
|
Options |
|
|
Résultat |
|
|
Exemple |
Exécutez au préalable la commande Exemple de commande :
Exemple de résultat :
|
Messages d'erreur
|
Message d'erreur |
Description |
|
|
Type d'objet incorrect : la clé n'est pas un objet TairRoaring. |
|
|
Type de paramètre incorrect : les valeurs des paramètres ne peuvent pas être converties en entiers 32 bits. |
|
|
Paramètres invalides :
|
|
|
La clé TairRoaring existe déjà et ses données ne peuvent pas être écrasées. Remarque
Cette erreur est corrigée dans TairRoaring V2.2. |
|
|
L'objet Roaring Bitmap n'existe pas. Cette opération n'est pas prise en charge. Remarque
Cette erreur est corrigée dans TairRoaring V2.2. |