Redis brpop

Redis brpop
La liste est un type de données redis populaire qui stocke une séquence de chaînes basée sur l'ordre d'insertion. Une liste peut contenir plus de 4 milliards d'éléments. Le fait unique sur la liste redis est qu'il maintient les propriétés de la tête et de la queue où les éléments peuvent être insérés des deux côtés. Habituellement, le Lpush et Rpush Les commandes sont utilisées pour insérer les éléments dans une liste. Pendant ce temps, la toute nouvelle liste est créée avec la clé spécifiée. Toutes les commandes de la liste se comportent de la même manière où une nouvelle liste est créée lorsqu'elle est passée avec une clé inexistante.


De plus, lorsque tous les éléments sont sortis de la liste, la clé associée sera supprimée de l'espace de clé redis. La liste Redis est le candidat idéal pour les applications de faible latence car les opérations d'insertion et de suppression ont une complexité de temps constante DIRIGER et QUEUE. Peu importe si cinq ou mille éléments sont dans la liste. Le temps pour l'insertion et la suppression prend un temps constant près des extrémités gauche et droite.

Il y a des besoins pratiques pour supprimer les éléments de la queue ou de la tête d'une liste donnée. Le Brpop et Blpop Les commandes sont introduites à partir de la version 2 redis.0.0 pour répondre à l'exigence mentionnée. Le Brpop La commande est évaluée dans ce guide.

La commande brpop

Le Brpop est la version avancée du Rpop commande. Le Rpop La commande apparaît d'un élément de la queue de la liste qui est stockée à une clé donnée. Comme son nom l'indique, la commande BRPOP est la version de blocage du RPOP. Lorsque la clé n'existe pas, la commande BRPOP ne reviendra pas avec le néant valeur tout de suite comme dans la commande rpop. Au lieu de cela, il attend qu'une nouvelle liste soit créée à cette clé. Lors de la création d'une nouvelle liste sur la clé mentionnée, la commande BRPOP apparaît l'élément de queue. De plus, cette commande accepte les touches multiples et ne fait éclater que les éléments de la première clé non vide.

Syntaxe:

Ce qui suit est la syntaxe de la commande BRPOP:

Brpop list_key [list_key…] timeout


list_key: C'est la clé de la liste.
temps libre: C'est la valeur de délai d'expiration en secondes où le client est bloqué jusqu'à ce que ce délai.

Habituellement, la commande BRPOP renvoie une sortie de tableau:

Si une liste non vide est spécifiée, la commande renvoie la valeur de l'élément éclaté et la clé de la liste de contenu comme dans le format suivant:

1) "Carlist"
2) "Benz"

Lorsqu'aucun élément unique ne doit être sauté à partir de l'une des listes spécifiées et que le délai d'expiration a expiré, le néant la valeur est renvoyée.

(néant)
(dix.46S)

Exemple: manipulation de la liste de lecture de la station de radio avec BRPOP

Supposons qu'une station de radio doit jouer des chansons d'une liste de lecture quotidienne. La playlist contient les ID de la chanson à jouer. Les chansons doivent être commandées dans l'ordre d'insertion. Chaque chanson est choisie à la fin de la playlist pour jouer.

Nous pouvons utiliser la structure de données de la liste Redis pour implémenter la liste de lecture mentionnée et les opérations de la liste pour manipuler les chansons de liste de lecture. Créons une liste de lecture appelée Liste de jeu de minuit et ajouter quelques identifiants de chanson comme indiqué dans ce qui suit. Le Lpush La commande est utilisée pour cela:

Lpush MidnightPlayList Song001 Song004 Song010 Song100 Song101


Cela créerait une liste comme indiqué dans ce qui suit:

Tête -> Song101 | Song100 | Song010 | Song004 | Song001 <- tail


Comportement non bloquant de la commande BRPOP

Il est maintenant temps de commencer un spectacle. Nous devrions choisir quelques chansons de la fin de la playlist. Ainsi, Song001 devrait être supprimé de la playlist et il doit être joué par l'enregistreur. Nous utilisons la commande BRPOP pour faire éclater le Song001 de la playlist et pour amener l'ID de la chanson à l'auditeur du client.

BRPOP MidnightPlaylist 5


L'argument du délai est spécifié comme cinq secondes. Depuis le Liste de jeu de minuit contient des éléments, le Brpop la commande se comporte de manière non bloquante. Par conséquent, il apparaît et renvoie l'élément de queue au client.

Blocage comportement de la commande BRPOP

Les résultats précédents peuvent également être obtenus via la commande RPOP. Par conséquent, examinons l'avantage réel de la commande BRPOP avec le comportement de blocage. Supprimons tous les éléments du Liste de jeu de minuit clé en utilisant la commande rpop.

RPOP MidnightPlaylist 4


Cela supprime tous les éléments restants de la liste et du Liste de jeu de minuit La clé est également supprimée de l'espace de clé redis.

Exécutons la commande BRPOP avec 60 secondes de temps mort et la clé inexistante Liste de jeu de minuit. Maintenant, la commande se comporte de manière bloquante. Il attend que la clé soit créée et que l'élément soit présent dans la playlist Liste de jeu de minuit.


Poussons un élément vers la liste de jeu de minuit via une autre fenêtre de terminal connecté au même magasin de données redis.

Lpush MidnightPlayList Song400


Sur la création du Liste de jeu de minuit Liste avec l'élément chanson400, La fenêtre du client qui a exécuté la commande BRPOP apparaît l'élément chanson400 de la playlist et renvoie l'ID de la chanson comme sortie instantanément.


Choisissez une chanson de plusieurs listes de lecture

Il peut y avoir plusieurs listes de lecture créées par la station de radio. Par conséquent, nous devrions choisir une chanson dans les listes de lecture données à un moment donné. Supposons que nous avons obtenu trois listes de lecture: MidnightPlayList1, MidnightPlayList2, et MidnightPlayList3. Le MidnightPlayList1 est déjà vide tandis que les deux autres listes de lecture sont non vides.

lpush MidnightPlayList2 Song1002 Song1005
lpush MidnightPlayList3 Song3000


Appelons la commande BRPOP avec les trois touches comme indiqué dans ce qui suit:

BRPOP MidnightPlayList1 MidnightPlayList2 MidnightPlayList3 10


Depuis la première clé MidnightPlayList1 est vide, il est ignoré par la commande ici. Il vérifie la première clé non vide de la liste des clés disponibles. Par conséquent, la commande localise le MidnightPlayList2 En tant que première clé non vide de l'ordre des clés. Comme prévu, le Song1002 est supprimé du MidnightPlayList2.


La commande BRPOP a une complexité de temps constante près de la tête et de la queue lorsqu'une seule touche est spécifiée. La complexité temporelle devient o (n) lorsque plusieurs clés sont spécifiées dans la commande. De plus, cette commande est très efficace à utiliser dans les applications à faible latence telles qu'une file d'attente, une pile, une chronologie dans les réseaux sociaux, etc.

Conclusion

Pour résumer, une liste Redis est une collection d'éléments de cordes stockés à une clé donnée tout en étant triés dans l'ordre d'insertion. Plusieurs commandes sont disponibles pour fonctionner sur les listes Redis avec une complexité de temps constante près de la tête et de la queue. Comme indiqué, la commande BRPOP est utilisée pour supprimer les éléments du côté droit de la liste Redis stockée à une clé donnée avec le support du blocage. La commande BRPOP bloque la connexion client lorsqu'aucun éléments n'est disponible pour supprimer des listes spécifiées. Comme vous le savez, cette commande accepte plusieurs clés où un élément apparaît de la première liste non vide où chaque clé est vérifiée dans l'ordre dans lequel ils sont transmis à la commande.