Redis rpoplpush

Redis rpoplpush
«Redis a plusieurs types de données intégrés, et chacun est à des fins différentes. La liste est l'un des types de données largement utilisés qui peuvent stocker plus de 4 milliards de chaînes à une clé Redis spécifiée. La chose particulière à propos de la liste Redis est qu'elle permet l'insertion et l'élimination des éléments de la tête et de la queue, ce qui a une complexité de temps constante. Le Lpush et Rpush sont utilisés pour insérer des éléments de chaîne près de la tête et de la queue d'une liste. Également LPOP et Rpop supprimer les éléments de liste à la tête et à la queue."

La commande rpoplpush

La commande rpoplpush est utilisée pour faire éclater un élément de la queue d'une liste source et l'insérer à la tête d'une liste de destination stockée à une clé donnée. Le retrait et l'insertion à la source et aux listes de destination se produisent simultanément.

Supposons qu'une liste stockée à la clé UN Contient les cordes «pomme», «orange» et «banane». De plus, une autre liste stockée à Key B a les éléments «raisins» et «avocat». Si nous appelons la commande rpoplpush où la liste A est la source et que la liste B est la destination, elle supprimera la chaîne «banane» de la liste A et l'inséquera juste avant l'élément «Grapes» dans la liste B.

Syntaxe

La commande rpoplpush a la syntaxe suivante.

Rpoplpush source_list_key destination_list_key

Source_list_key: Ceci est la clé redis de la liste dont vous avez besoin pour supprimer un élément.

destination_list_key: Ceci est la clé redis de la liste dont vous avez besoin pour insérer l'élément éclaté.

Cette commande renvoie une réponse de chaîne qui est un élément de liste éclaté de la liste des sources si la liste des sources est disponible. Lorsque la liste des sources n'existe pas, la commande reviendra un Nil valeur. Dans certains cas, la source et la destination peuvent être les mêmes. Par conséquent, il effectuera à la fois l'insertion et la suppression dans la même liste.

Cas d'utilisation 01 - Implémentation de la file d'attente de messagerie

Les listes Redis ont été principalement utilisées dans les implémentations de serveurs de messagerie où les producteurs produisent des données près de la tête de la liste, et les consommateurs consomment des données à partir de la queue de la liste stockée à une clé spécifiée. Pensez à une situation où une défaillance du réseau ou un problème de serveur est lancée; Le consommateur pourrait perdre les données éclatées avant le début du traitement. Ce pourrait être une perte que les consommateurs ne peuvent pas récupérer au cours de leur vie. Par conséquent, une file d'attente plus fiable est nécessaire. Utilisons la commande rpoplpush pour implémenter une file d'attente de fiabilité.

Créons une liste Liste des processus avec quelques éléments, comme indiqué dans ce qui suit. La commande LPUSH peut être utilisée pour produire des données dans la liste spécifiée.

Lpush ProcessList "P1" "P2" "P3" "P4"

La commande ci-dessus pousse les éléments près de la tête de la liste. Par conséquent, les éléments seront stockés dans l'ordre suivant.

"P4" | "P3" | "P2" | "P1"

Ensuite, nous utiliserons le Rpoplpush Commande en tant que client pour faire éclater le dernier élément de la liste de listes de processus et le pousser dans une nouvelle liste stockée à la clé Fiabilité.

RPOPLPUSH Processlist ReliabilityQueue

Idéalement, l'élément «P1» doit être éclaté à partir de la liste des sources, et la chaîne «P1» devrait être la sortie de cette commande. En même temps, cet élément est poussé dans la liste stockée à la clé Fiabilité. Inspectons-le en utilisant le Se ranger commande.

lrange fiabilitéquee 0 5

Sortir:

Nous appellerons le Se ranger Commande sur la liste Liste des processus aussi.

Lrange ProcessList 0 5

Sortir:

Comme prévu, l'élément «P1» est supprimé de la liste des sources. Le Rpoplpush La commande est recommandée d'utiliser avec des files d'attente de fiabilité.

Cas d'utilisation 02 - Implémentation de nœuds de travailleurs fiables pour traiter les applications individuelles

Comme mentionné, la source et la destination peuvent être les mêmes pour la commande rpoplpush. Dans ce cas, l'insertion et la suppression sont effectuées dans la même liste. Cela peut être utile lors de la mise en œuvre d'un système de surveillance pour traiter des centaines de demandes d'entrevue pour un emploi donné.

Plusieurs travailleurs et itérer sur la liste jusqu'à ce que toutes les applications aient été traitées. La meilleure chose à propos de ce type de file d'attente circulaire est qu'elle ne perdra aucune demande en raison de la réinsertion de l'article dans la même liste et finalement reçu par l'un des travailleurs de la prochaine itération.

Créons une nouvelle liste, JobApplicationList.

LPUSH JobApplicationList CV1 CV3 CV7 CV10

La liste devrait ressembler à ce qui suit.

"CV10" | "CV7" | "CV3" | "CV1"

Appelons maintenant la commande rpoplpush avec la même liste que les arguments source et de destination indiqués dans ce qui suit.

RPOPLPUSH JobApplicationList JobApplicationList

Comme prévu, l'élément de queue «CV1» a été supprimé et retourné par la commande.

Nous pouvons inspecter le JobApplicationList Liste à nouveau pour vérifier si l'élément «CV1» a été inséré près de la tête de la même liste.

LRange JobApplicationList 0 5

Comme vous pouvez le voir, l'élément «CV1» a été inséré à partir de la tête de la liste stockée à la clé JobApplicationList. La liste circulaire peut être utilisée comme moyen fiable de mettre en œuvre des systèmes de surveillance comme celui-ci.

Conclusion

Pour résumer, la commande rpoplpush est l'une des commandes largement utilisées qui ont été utilisées pour effectuer à la fois la suppression et l'insertion des listes. Comme vous le savez, cette commande accepte les listes source et de destination comme arguments. L'élément de queue de la liste des sources sera éclaté et inséré près de la tête de la liste de destination stockée à une clé spécifiée. Comme indiqué, la commande rpoplpush est utilisée pour implémenter des files d'attente fiables dans les systèmes de messagerie et également dans les systèmes de surveillance où plusieurs nœuds de travailleurs fonctionnent sur la liste donnée des éléments parallèles de manière fiable avec une récupération perdue équipée. Cette commande est dépréciée de la version 6 redis.2.0 et encouragé à utiliser le lmove commande avec le DROITE et GAUCHE arguments.