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")
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"
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!