Maison > base de données > Redis > Quand utiliser la liste dans Redis

Quand utiliser la liste dans Redis

藏色散人
Libérer: 2019-06-17 16:05:13
original
4261 Les gens l'ont consulté

La liste Redis (list) est une simple liste de chaînes, triées par ordre d'insertion. Vous pouvez ajouter un élément à la tête (à gauche) ou à la queue (à droite) d'une liste, et une liste peut contenir jusqu'à 232 - 1 éléments (4294967295, plus de 4 milliards d'éléments par liste). (Recommandé : "tutoriel vidéo redis")

Quand utiliser la liste dans Redis

list

Commandes communes :

lpush, rpush, lpop, rpop, lrange, BLPOP (version bloquée), etc.

Scénarios d'application :

Il existe de nombreux scénarios d'application pour la liste Redis, et c'est également l'une des structures de données les plus importantes de Redis.

Nous pouvons facilement mettre en œuvre des fonctions telles que le classement des dernières actualités.

Une autre application des listes est la file d'attente de messages. Vous pouvez utiliser l'opération PUSH des listes pour stocker des tâches dans des listes, puis le thread de travail utilise l'opération POP pour supprimer les tâches à exécuter.

Méthode d'implémentation :

L'implémentation de la liste Redis est une liste doublement chaînée, qui peut prendre en charge la recherche inversée et la traversée, et est plus pratique pour fonctionner. Cependant, cela entraîne une surcharge de mémoire supplémentaire. De nombreuses implémentations dans Redis, y compris les files d'attente de tampon d'envoi, etc., utilisent également cette structure de données.

RPOPLPUSH source destination

La commande RPOPLPUSH effectue les deux actions suivantes dans un temps atomique :

Listera la source Le Le dernier élément (l'élément de queue) de l'élément est extrait et renvoyé au client.

Insérez l'élément sauté par source dans la liste de destination en tant qu'élément de tête de la liste de destination.

Si la source et la destination sont identiques, l'élément tail de la liste est déplacé vers la tête et l'élément est renvoyé. Ce cas particulier peut être considéré comme une opération de rotation de la liste.

Un exemple typique est celui des programmes de surveillance de serveurs : ils doivent vérifier un groupe de sites Web en parallèle dans les plus brefs délais pour garantir leur accessibilité.

    redis.lpush "downstream_ips", "192.168.0.10"  
    redis.lpush "downstream_ips", "192.168.0.11"  
    redis.lpush "downstream_ips", "192.168.0.12"  
    redis.lpush "downstream_ips", "192.168.0.13"  
    Then:  
    next_ip = redis.rpoplpush "downstream_ips", "downstream_ips"
Copier après la connexion

BLPOP Liste vide. Considérez la commande suivante :

BLPOP job command request 30 #Block for 30 seconds. S'il vaut 0, il bloquera indéfiniment. La liste des tâches est vide et est ignorée. est sorti.

1) "commande"                                                                                                                                                                                         > Pourquoi devrions-nous bloquer la version pop Eh bien, principalement pour éviter les sondages. À titre d'exemple simple, si nous utilisons list pour implémenter une file d'attente de travail. Le thread exécutant la tâche peut appeler la version bloquante de pop pour obtenir la tâche, évitant ainsi d'interroger pour vérifier si une tâche existe. Le thread de travail peut revenir immédiatement lorsque la tâche arrive et peut également éviter le retard causé par l'interrogation.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal