Heim > Datenbank > Redis > Wann sollte die Liste in Redis verwendet werden?

Wann sollte die Liste in Redis verwendet werden?

藏色散人
Freigeben: 2019-06-17 16:05:13
Original
4261 Leute haben es durchsucht

Redis-Liste (Liste) ist eine einfache Liste von Zeichenfolgen, sortiert in Einfügungsreihenfolge. Sie können ein Element am Kopf (links) oder am Ende (rechts) einer Liste hinzufügen. Eine Liste kann bis zu 232 - 1 Elemente enthalten (4294967295, mehr als 4 Milliarden Elemente pro Liste). (Empfohlen: „Redis-Video-Tutorial“)

Wann sollte die Liste in Redis verwendet werden?

Liste

Allgemeine Befehle:

lpush, rpush, lpop, rpop, lrange, BLPOP (blockierte Version) usw.

Anwendungsszenarien:

Es gibt viele Anwendungsszenarien für die Redis-Liste und sie ist auch eine der wichtigsten Datenstrukturen von Redis.

Wir können Funktionen wie das Ranking der neuesten Nachrichten problemlos implementieren.

Eine weitere Anwendung von Lists ist die Nachrichtenwarteschlange. Sie können die PUSH-Operation von Lists verwenden, um Aufgaben in Lists zu speichern, und dann verwendet der Arbeitsthread die POP-Operation, um die Aufgaben zur Ausführung herauszunehmen.

Implementierungsmethode:

Die Implementierung der Redis-Liste ist eine doppelt verknüpfte Liste, die die umgekehrte Suche und Durchquerung unterstützen kann und bequemer ist Für den Betrieb bringt es jedoch einen gewissen zusätzlichen Speicheraufwand mit sich, einschließlich Sendepufferwarteschlangen usw.

RPOPLPUSH Quellziel

Der Befehl RPOPLPUSH führt die folgenden zwei Aktionen innerhalb einer Atomzeit aus:

Listet die Quelle auf Das letzte Element (das Endelement) im Element wird herausgenommen und an den Client zurückgegeben.

Fügen Sie das von der Quelle eingefügte Element als Kopfelement der Zielliste in das Listenziel ein.

Wenn Quelle und Ziel identisch sind, wird das Endelement in der Liste an den Kopf verschoben und das Element zurückgegeben. Dieser Sonderfall kann als Rotationsoperation der Liste betrachtet werden.

Ein typisches Beispiel sind Serverüberwachungsprogramme: Sie müssen eine Gruppe von Websites parallel in kürzester Zeit überprüfen, um deren Erreichbarkeit sicherzustellen.

    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"
Nach dem Login kopieren

BLPOP

Angenommen, es gibt drei Listen mit Job, Befehl und Anforderung. Job existiert nicht und sowohl Befehl als auch Anforderung gelten nicht - Leere Liste. Betrachten Sie den folgenden Befehl:

BLPOP job command request 30 #Block for 30 seconds. Wenn es 0 ist, wird es auf unbestimmte Zeit blockiert. Dann wird das erste Element der Befehlsliste übersprungen aufgetaucht.

1) „Befehl“                                                                                                                                                          > Warum sollten wir die Pop-Version blockieren? Hauptsächlich, um Umfragen zu vermeiden. Als einfaches Beispiel verwenden wir eine Liste, um eine Arbeitswarteschlange zu implementieren. Der Thread, der die Aufgabe ausführt, kann die blockierende Version von Pop aufrufen, um die Aufgabe abzurufen, und vermeidet so die Abfrage, ob eine Aufgabe vorhanden ist. Der Arbeitsthread kann sofort zurückkehren, wenn die Aufgabe kommt, und kann auch die durch Abfragen verursachte Verzögerung vermeiden.

Das obige ist der detaillierte Inhalt vonWann sollte die Liste in Redis verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage