Redis bitop

Redis bitop

Fondamentaux des bitmaps redis

Les bitmaps redis sont une autre façon de traiter les données de type String comme une collection de bits ou de vecteurs de bits. Par conséquent, la structure de données sous-jacente des bitmaps est une chaîne où une chaîne est stockée à l'aide d'un tableau de zéros et de zéros dans la mémoire de l'ordinateur. Redis Bitmaps prend en charge la récupération et l'alternance de la valeur bit d'un décalage donné dans un bitmap. En outre, il fournit des commandes pour effectuer les opérations bit.

Comme mentionné, une valeur de chaîne stockée dans la base de données redis peut être traitée comme un bitmap. Nous pouvons effectuer les opérations bitwise sur plusieurs chaînes Redis stockées sur des clés données comme suit:

Et opération

La figure suivante illustre comment fonctionne le bit et le fonctionnement sur deux chaînes données. Dans cet exemple, nous utiliserons les chaînes A et B pour effectuer le bit et l'opération.

Ou opération

Performons le bit ou l'opération sur les deux mêmes chaînes de l'exemple précédent.

Comme indiqué, le bitmap résultant est 1000011, ce qui est la représentation ASCII de la lettre C.

Opération XOR

La figure suivante explique clairement comment l'opération XOR bitwise fonctionne sur les deux mêmes chaînes:

Pas opération

L'opérateur NON est utilisé comme opérateur unaire dans les opérations Redis Bitwise. Par conséquent, il ne faut qu'une seule valeur de chaîne comme entrée.

L'opération Bitwise Not sur la chaîne A renvoie la valeur hexadécimale \ xbe et aucune valeur ASCII imprimable associée.

La commande bitop

La commande bitop a été introduite par Redis pour effectuer les opérations bitwise discutées précédemment sur une ou plusieurs chaînes (bitmaps) stockées à des clés données. Cette commande fonctionne avec une complexité temporelle O (n) où n est la longueur de la chaîne la plus longue dans la comparaison qui est assez lente que les autres opérations bitmap. Cette commande effectue le fonctionnement spécifié sur le sens bit et stocke le bitmap (chaîne) résultant à la touche de destination spécifiée.

La syntaxe de la commande bitop est la suivante:

Bitop bitwise_opération destination_key bitmap_key [bitmap_key…]

La commande bitop renvoie une valeur entière qui est de la taille du bitmap résultant. La taille du bitmap résultant est égale à la taille du bitmap d'entrée le plus long.

Dans certains cas, les bitmaps d'entrée contiennent des chaînes de différentes tailles. Ainsi, la commande bitop traite toutes les autres chaînes d'entrée qui sont plus courtes que la plus longue en tant que zéro padée jusqu'à la taille de la chaîne la plus longue. De même, les touches bitmap non existantes sont considérées.

Cas d'utilisation - utilisateurs actifs d'un site Web dans un jour donné

Supposons qu'un propriétaire de site Web s'intéresse aux utilisateurs actifs qui sont connectés à un site Web, hebdomadaire. Dans ce cas, un bitmap est un candidat idéal pour stocker les visites quotidiennes. Chaque utilisateur peut être représenté à l'aide d'un décalage dans le bitmap. De plus, des bitmaps séparés peuvent être utilisés par jour avec un ID unique comme indiqué dans l'illustration suivante:

Créons des bitmaps pour les trois jours précédents (dimanche, lundi et mardi) qui détiennent le statut de visite de chaque utilisateur. La commande set peut être utilisée pour créer chaque bitmap comme suit:

Nous créons le premier bitmap identifié par la clé Visite: 2022: 08: 4: Soleil. Ainsi, le premier utilisateur est identifié par le décalage 0. Supposons que l'utilisateur associé à l'utilisateur 0 a visité le site Web dimanche. Par conséquent, le décalage 0 est défini sur 0 comme suit:

Visite de Setbit: 2022: 08: 4: Soleil 0 1

De même, l'état de visite des utilisateurs associés aux ID utilisateur 1, 2, 3 et 4 est défini en conséquence.

Visite de Setbit: 2022: 08: 4: Soleil 1 0
Visite de Setbit: 2022: 08: 4: Soleil 2 1
Visite de Setbit: 2022: 08: 4: Soleil 3 0
Visite de Setbit: 2022: 08: 4: Soleil 4 0

Inspectons les valeurs de bit pour chaque utilisateur à l'aide de la commande getbit comme suit:

Visite de Getbit: 2022: 08: 4: soleil 0
Visite de Getbit: 2022: 08: 4: soleil 1
Visite de Getbit: 2022: 08: 4: soleil 2
Visite de Getbit: 2022: 08: 4: soleil 3
Visite de Getbit: 2022: 08: 4: soleil 4

De même, nous pouvons créer les bitmaps pour stocker les visites utilisateur lundi et mardi qui sont identifiées par les clés Visite: 2022: 08: 5: lun et Visite: 2022: 08: 6: Tue.

L'intérêt du propriétaire du site Web est d'amener les utilisateurs qui ont visité le site Web au moins une journée à partir du dimanche, du lundi ou du mardi. Ce type d'informations peut être obtenu en utilisant la commande bitop comme suit. L'opération ou le bit est idéal pour vérifier les utilisateurs qui ont visité le site au moins une journée à partir des trois jours.

Bitop ou AtLeaseOneVisituser Visite: 2022: 08: 4: Soleil Visite: 2022: 08: 5: Mon Visite: 2022: 08: 6: mar

Nous avons effectué le bit ou l'opération sur les trois bitmaps créés précédents. Le bitmap résultant est stocké à la clé atlestonevisituser. Vérifions la chaîne ou le bitmap résultant à l'aide de la commande get comme suit:

Obtenez AtLeaseOneVisituser

La valeur hexadécimale retournée de Bitmap ou de String est \ xb0 qui représente le signe de degré en ascii. Inspectons chaque bit de la chaîne stockée à la clé de destination atlintoonevisituser en utilisant la commande getbit.

getbit atLeaseOneVisituser 0
getbit atLeaseOneVisituser 1
getbit atLeaseOneVisituser 2
getbit atLeaseOneVisituser 3
getbit atLeaseOneVisituser 4

Comme nous avons pu le voir dans la sortie, le bitmap résultant ressemble à ce qui suit:

1 | 0 | 1 | 1 | 0

Le décalage 0 est associé à l'ID utilisateur 0, le décalage 1 est avec l'ID utilisateur 1, et ainsi de suite. Selon le résultat de l'opération ou de l'opération, seuls trois utilisateurs ont visité le site Web au moins une journée à partir des trois jours mentionnés. Les utilisateurs stockés aux décalages 1 et 4 qui sont associés aux IDS des utilisateurs 1 et 4 n'ont pas visité le site Web le dimanche, le lundi ou le mardi.

Conclusion

En résumé, les bitmaps redis sont un tableau de zéros et de zéros où chaque bit est identifié par une valeur de décalage. Comme discuté, la commande bitop est utilisée pour effectuer les opérations bit. Comme indiqué dans le cas d'utilisation, la chaîne résultante est stockée à la touche spécifiée. Cette commande est assez lente lorsque la taille de la corde la plus longue augmente. Dans l'ensemble, la commande bitop est utile pour identifier les modèles de visites de sites Web et les statistiques d'utilisation des applications musicales sur une période donnée.