Structures de données redis
Redis est une implémentation de niveau supérieur des magasins de valeurs clés traditionnels. Il n'est pas limité à maintenir les valeurs de chaîne pour une clé donnée. Redis peut stocker des structures de données (types) plus complexes telles que les listes, les hachages, les ensembles et les bitmaps (tableaux de bits). Le type de données de chaîne est toujours disponible en redis. Il a été utilisé pour implémenter certaines de ces opérations de structure de données complexes.
Que sont les bitmaps redis?
Le bitmap n'est pas un type de données natif dans Redis. Son implémentation sous-jacente est basée sur le type de données de chaîne. Il s'agit d'un ensemble de fonctionnalités construites sur le type de données de chaîne. La façon la plus simple de comprendre un bitmap est de le considérer comme un éventail de bits.
Comme mentionné ci-dessus, il s'agit d'une représentation de chaîne avec des capacités de fonctionnement des bits. Le bit est la plus petite taille de stockage à l'intérieur d'un ordinateur. Par conséquent, chaque bit peut stocker 1 ou 0 à un moment donné.
La longueur maximale d'une chaîne redis est de 512 Mo. Si nous convertissons cette valeur en bits, c'est environ 4 milliards de bits, ce qui est plus que suffisant à utiliser dans une application réelle. Nous appelons l'index du tableau «décalage» dans les bitmaps redis. Jetons un coup d'œil à l'exemple suivant.
Opérations bitmap
Il existe deux principaux types d'opérations associés aux bitmaps redis. Les opérations à un seul bit sont effectuées sur un bit spécifique, comme pour obtenir une valeur ou une valeur définie. Il existe un autre type d'opération qui est effectué sur un groupe de bits, comme BitCount.
La commande bitCount
La commande BitCount est une opération de type lot. Il compte le nombre d'occurrences de «1» dans un bitmap ou une chaîne donné. Nous appelons cela «compter la population» ou compter les bits définis.
Syntaxe
1 | BitCount your_key [interval_start Interval_end] [octet | BIT] |
Ta clé: Ceci est la clé de la chaîne ou du bitmap. C'est un paramètre obligatoire.
Interval_start, interval_end: Ces deux paramètres spécifient la plage à l'aide des index de démarrage et de fin. Ces deux paramètres sont facultatifs.
Octet ou bit: Ce paramètre spécifie le démarrage et la fin de l'intervalle comme un index d'octet ou un index de bits. Ce paramètre est facultatif. Par défaut, l'octet est utilisé.
Exemple 01
Créons une clé «Exemple1» et définissons les valeurs des deuxième et quatrième bits sur 1. Nous utiliserons le redis setbit Commande ici.
1 2 3 | Exemple de setbit1 2 1 Exemple de setbit1 4 1 |
Sortir:
Vérinons la valeur d'index bitmap créé à l'aide de redis getbit commande.
1 2 3 | Exemple de getbit1 2 Exemple de getbit1 4 |
Sortir:
Les 2e et 4e bits sont définis à 1 comme prévu.
Utilisons le Bittal commande pour compter le nombre de bits set ou 1s dans l'exemple1 bitmap.
1 | Exemple de bitcount1 |
Sortir:
Le bitmap Exemple1 ressemble à ce qui suit.
0 | 0 | 1 | 0 | 1 |
---|
Comme vous pouvez le voir, les 2e et 4e décalages sont définis sur 1. D'où le bittal La sortie de la commande doit être 2 comme ci-dessus.
Exemple 02
Créons un nouvel exemple clé 2 et attribuez la chaîne «A.”La chaîne A est représentée par 8 bits (1 octet), comme indiqué dans ce qui suit.
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 |
---|
1 | Définir l'exemple2 "A" |
Sortir:
Utilisons le bittal commande pour vérifier le nombre de bits définis. Depuis que nous avons obtenu le 1er et le 7e bit sur 1, le bittal La sortie de la commande doit être 2.
1 | BitCount Example2 |
Sortir:
Normalement, le bittal La commande vérifie tous les octets contenus dans le tableau. Dans certains scénarios, il pourrait être un processus redondant pour examiner tous les octets dans un bitmap ou une chaîne. Par conséquent, nous pouvons spécifier une plage pour effectuer le bittal opération comme indiqué dans ce qui suit.
1 | BitCount Key start_index end_index |
Par défaut, le start_index et end_index Les valeurs des paramètres sont basées sur les indices d'octets. Essayons ceci dans l'exemple suivant.
Exemple 03
Nous créerons une nouvelle clé nommée Exemple3 et attribuer la valeur «AB."
1 | Définir l'exemple3 "AB" |
La chaîne d'exemple3 doit ressembler à ce qui suit.
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| | UN | | | B |
Les 8 premiers bits représentent la lettre A et les 8 secondes représentent la lettre B. La chaîne «AB» prend 2 octets. Utilisons la commande bitCount pour compter le nombre de bits définis pour un intervalle donné.
1 | Exemple de bitcount3 0 0 |
Nous avons spécifié à la fois les index d'octets de début et de fin comme 0 dans la commande ci-dessus. Cela signifie qu'il comptera les 1 dans le premier octet (8 bits). Par conséquent, la valeur de sortie doit être 2.
Sortir:
Si nous spécifions à la fois les index de démarrage et de fin comme 1, la commande bitCount comptera les bits de set uniquement dans le deuxième octet (deuxième 8 bits), qui représente la lettre B. Ça devrait être à nouveau deux.
1 | Exemple de bitcount3 1 1 |
Sortir:
Nous pouvons récupérer tous les bits définis dans la chaîne «AB» en spécifiant la plage de 0e octet à 1er octet. La sortie doit être quatre depuis que nous avons obtenu quatre 1 dans toute la chaîne.
1 | Exemple de bitcount3 0 1 |
Sortir:
Le bittal La commande permet aux utilisateurs de spécifier l'intervalle à l'aide de l'index bit. La chaîne «AB» a 16 bits, comme le montre l'illustration ci-dessus. Par conséquent, les indices d'intervalle minimum et max seront respectivement de 0 et 15. Nous devons spécifier cela explicitement à la commande redis en utilisant le BIT argument. Puis le bittal La commande traitera les index de démarrage et de fin comme un index.
Comptons les SetBits de 1er bit (0ème index) à 4e bit (3e index)
1 | Exemple de bitcount3 0 3 bits |
Remarquez le nouvellement passé BIT argument. Maintenant, il examine les bits définis de 0e à 3e bit Index. La sortie doit être une.
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|< | = | = | = | > | | |||||||||||
Un seul bit set est dans cette gamme |
Sortir:
Ensuite, nous donnerons l'intervalle de 1er bit (index oth bit) au 10e bit (index 9e bit).
1 | Exemple de bitcount3 0 9 bits |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|< | = | = | = | = | = | = | = | = | = | = | > | | ||||
Seuls 3 bits set sont dans cette gamme |
Selon l'illustration ci-dessus, la sortie doit être 3.
Sortir:
Conclusion
Redis peut stocker différents types de structures de données pour une clé spécifique. Les bitmaps sont l'une des structures de données utiles que Redis prend en charge. L'implémentation sous-jacente est une représentation de chaîne avec des opérations bitmap prises en charge. Le BitCount est une commande redis qui peut être utilisée pour compter le nombre de bits définis dans un bitmap ou une chaîne donné.