Inhaltsverzeichnis
Redis-Warteschlangendatenstruktur
Verknüpfte Liste auflisten
Zset Ordered Set
Aufgabenplanung des Laravel-Warteschlangendienstes
Der Gesamtprozess des Laravel-Warteschlangendienstes
Aufgabe erstellen
Warteschlangeneinstellungen
Erstellung der Aufgabenklasse
Heim PHP-Framework Laravel Einführung in die Verwendung von Warteschlangen im Laravel-Framework (mit Code)

Einführung in die Verwendung von Warteschlangen im Laravel-Framework (mit Code)

Aug 28, 2018 pm 01:37 PM
laravel php redis

Dieser Artikel bietet Ihnen eine Einführung in die Verwendung von Warteschlangen im Laravel-Framework (mit Code). Ich hoffe, dass er für Freunde hilfreich ist.

In der tatsächlichen Projektentwicklung stoßen wir häufig auf Situationen, in denen leichte Warteschlangen erforderlich sind, z. B. das Senden von Textnachrichten, das Senden von E-Mails usw. Diese Aufgaben reichen nicht aus, um schwere Nachrichtenwarteschlangen wie Kafka und RabbitMQ zu verwenden, aber Und es erfordert Funktionen wie Asynchronität, Wiederholung und Parallelitätskontrolle. Im Allgemeinen verwenden wir Redis, Beanstalk und Amazon SQS, um verwandte Funktionen zu implementieren. In diesem Artikel werden die am häufigsten verwendeten Redis-Warteschlangen vorgestellt.

Bevor wir den Warteschlangendienst von Laravel erklären, müssen wir zunächst über den auf Redis basierenden Warteschlangendienst sprechen. Erstens ist Redis für das Caching konzipiert, kann aber aufgrund einiger seiner eigenen Eigenschaften für Nachrichtenwarteschlangen verwendet werden

Redis-Warteschlangendatenstruktur

Verknüpfte Liste auflisten

Die Nachrichtenwarteschlangenfunktionen von Redis wie FIFO (First In, First Out) sind einfach zu implementieren. Sie benötigen lediglich ein Listenobjekt, um Daten vom Anfang abzurufen und Daten vom Ende zu stopfen.

Verwandte Befehle: (1) Links rein und rechts raus: lpush/rpop (2) Rechts rein und links raus: rpush/lpop.

Diese einfache Nachrichtenwarteschlange ist einfach zu implementieren.

Zset Ordered Set

Einige Aufgabenszenarien erfordern nicht, dass die Aufgabe sofort ausgeführt wird, aber einige Aufgaben sind sehr wichtig und müssen wiederholt werden, wenn die Aufgabe fehlschlägt. Diese Funktionen können nicht allein durch die Verwendung von Listen erreicht werden. Zu diesem Zeitpunkt ist eine geordnete Sammlung von Redis erforderlich.

Der geordnete Redis-Satz ähnelt dem Redis-Satz. Es handelt sich um eine Sammlung, die nicht dieselbe Zeichenfolge enthält. Der Unterschied zwischen ihnen besteht darin, dass jedem Mitglied der geordneten Menge eine Bewertung zugeordnet ist, anhand derer die Mitglieder der geordneten Menge von der niedrigsten zur höchsten Bewertung eingestuft werden.

Wenn man nur den geordneten Satz und die verzögerten Aufgaben betrachtet, gibt es keinen Zusammenhang, aber Sie können die Punktzahl des geordneten Satzes auf den Zeitpunkt festlegen, zu dem die verzögerte Aufgabe gestartet wird, und dann den geordneten Satz abfragen, um die abzurufen Abgelaufene Aufgaben kommen zur Verarbeitung heraus und erkennen so die Funktion, Aufgaben zu verzögern.

Bei wichtigen Aufgaben, die wiederholt werden müssen, wird die Aufgabe vor ihrer Ausführung in eine geordnete Sammlung aufgenommen und die längste Ausführungszeit der Aufgabe festgelegt. Wenn die Aufgabe erfolgreich ausgeführt wird, wird die Aufgabe aus der geordneten Sammlung gelöscht. Wenn die Aufgabe nicht innerhalb der angegebenen Zeit abgeschlossen wird, werden die Aufgaben im geordneten Satz wieder in die Warteschlange gestellt.

Verwandte Befehle:

(1) ZADD Fügt ein oder mehrere Mitglieder zu einem geordneten Satz hinzu oder aktualisiert seine Punktzahl, wenn er bereits vorhanden ist.

(2) ZRANGEBYSCORE Gibt einen geordneten Satz von Mitgliedsbereichen nach Punktzahl zurück.

(3) ZREMRANGEBYRANK Entfernt alle Mitglieder aus einer geordneten Menge innerhalb des angegebenen Index.

Aufgabenplanung des Laravel-Warteschlangendienstes

Der Aufgabenplanungsprozess des Warteschlangendienstes ist wie folgt:

Einführung in die Verwendung von Warteschlangen im Laravel-Framework (mit Code)

Laravels Warteschlangendienst besteht aus zwei Es gibt zwei Prozesssteuerungen, eine ist der Produzent und die andere ist der Verbraucher. Diese beiden Prozesse manipulieren drei Redis-Warteschlangen, von denen eine List für unmittelbare Aufgaben und zwei Zsets für verzögerte und ausstehende Aufgaben zuständig ist.

Der Produzent ist dafür verantwortlich, Aufgaben an Redis zu senden. Wenn es sich um eine sofortige Aufgabe handelt, wird sie standardmäßig in die Warteschlange gestellt. Wenn es sich um eine verzögerte Aufgabe handelt, wird sie in die Warteschlange gestellt: Standard. verzögert.

Der Verbraucher fragt zwei Warteschlangen ab, entnimmt kontinuierlich Aufgaben aus der Warteschlange, stellt die Aufgaben zunächst in queue:default:reserved ein und führt dann verwandte Aufgaben aus. Wenn die Aufgabe erfolgreich ausgeführt wird, wird die Aufgabe in queue:default:reserved gelöscht, andernfalls wird sie wieder in die Warteschlange queue:default:delayed gestellt.

Der Gesamtprozess des Laravel-Warteschlangendienstes

Aufgabenverteilungsprozess:

Einführung in die Verwendung von Warteschlangen im Laravel-Framework (mit Code)

Aufgabenprozessorbetrieb:

Einführung in die Verwendung von Warteschlangen im Laravel-Framework (mit Code)

Aufgabe erstellen

Warteschlangeneinstellungen

'redis' => [
        'driver' => 'redis',
        'connection' => 'default',
        'queue' => 'default',
        'retry_after' => 90,
    ],
Nach dem Login kopieren

In config/queue.php konfigurieren
Im Allgemeinen ist die Standard-Redis-Konfiguration Wie oben, Verbindung ist der Verbindungsname von Redis in der Datenbank. Beachten Sie, dass Sie bei Verwendung eines Redis-Clusters das Schlüssel-Hash-Tag verwenden müssen Läuft über retry_after hinaus. Nach dieser Zeit wird die Aufgabe wieder in die Warteschlange gestellt.

Erstellung der Aufgabenklasse

Die Struktur der Aufgabenklasse ist sehr einfach, sie enthält im Allgemeinen nur eine Handle-Methode, die die Warteschlange zum Aufrufen dieser Aufgabe verwendet.

Wenn Sie möchten, dass Aufgaben in die Warteschlange verschoben und nicht synchron ausgeführt werden, müssen Sie die IlluminateContractsQueueShouldQueue-Schnittstelle implementieren.

Wenn Sie Aufgaben an eine bestimmte Verbindung senden möchten, z. B. Redis oder Sqs, müssen Sie die Verbindungsvariable festlegen.

Wenn Sie die Aufgabe in eine bestimmte Warteschlange verschieben möchten, können Sie die Warteschlangenvariable festlegen.

如果想要让任务延迟推送,那么需要设置 delay 变量。

如果想要设置任务至多重试的次数,可以使用 tries 变量;

如果想要设置任务可以运行的最大秒数,那么可以使用 timeout 参数。

如果想要手动访问队列,可以使用 trait : IlluminateQueueInteractsWithQueue。

任务的分发
分发服务
写好任务类后,就能通过 dispatch 辅助函数来分发它了。唯一需要传递给 dispatch 的参数是这个任务类的实例:

class PodcastController extends Controller
{
    public function store(Request $request)
    {
        // 创建播客...

        ProcessPodcast::dispatch($podcast);
    }
}
Nach dem Login kopieren

如果想延迟执行一个队列中的任务,可以用任务实例的 delay 方法。

 ProcessPodcast::dispatch($podcast)
                ->delay(Carbon::now()->addMinutes(10));
Nach dem Login kopieren

通过推送任务到不同的队列,可以给队列任务分类,甚至可以控制给不同的队列分配多少任务。要指定队列的话,就调用任务实例的 onQueue 方法:

ProcessPodcast::dispatch($podcast)->onQueue('processing');
Nach dem Login kopieren

如果使用了多个队列连接,可以将任务推到指定连接。要指定连接的话,可以在分发任务的时候使用 onConnection 方法:

ProcessPodcast::dispatch($podcast)->onConnection('redis
');
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEinführung in die Verwendung von Warteschlangen im Laravel-Framework (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die Zukunft von PHP: Anpassungen und Innovationen Die Zukunft von PHP: Anpassungen und Innovationen Apr 11, 2025 am 12:01 AM

Die Zukunft von PHP wird erreicht, indem sich an neue Technologietrends angepasst und innovative Funktionen eingeführt werden: 1) Anpassung an Cloud Computing, Containerisierung und Microservice -Architekturen, Unterstützung von Docker und Kubernetes; 2) Einführung von JIT -Compilern und Aufzählungsarten zur Verbesserung der Leistung und der Datenverarbeitungseffizienz; 3) die Leistung kontinuierlich optimieren und Best Practices fördern.

PHP vs. Python: Verständnis der Unterschiede PHP vs. Python: Verständnis der Unterschiede Apr 11, 2025 am 12:15 AM

PHP und Python haben jeweils ihre eigenen Vorteile, und die Wahl sollte auf Projektanforderungen beruhen. 1.PHP eignet sich für die Webentwicklung mit einfacher Syntax und hoher Ausführungseffizienz. 2. Python eignet sich für Datenwissenschaft und maschinelles Lernen mit präziser Syntax und reichhaltigen Bibliotheken.

So erstellen Sie den Redis -Clustermodus So erstellen Sie den Redis -Clustermodus Apr 10, 2025 pm 10:15 PM

Der Redis -Cluster -Modus bietet Redis -Instanzen durch Sharding, die Skalierbarkeit und Verfügbarkeit verbessert. Die Bauschritte sind wie folgt: Erstellen Sie ungerade Redis -Instanzen mit verschiedenen Ports; Erstellen Sie 3 Sentinel -Instanzen, Monitor -Redis -Instanzen und Failover; Konfigurieren von Sentinel -Konfigurationsdateien, Informationen zur Überwachung von Redis -Instanzinformationen und Failover -Einstellungen hinzufügen. Konfigurieren von Redis -Instanzkonfigurationsdateien, aktivieren Sie den Cluster -Modus und geben Sie den Cluster -Informationsdateipfad an. Erstellen Sie die Datei nodes.conf, die Informationen zu jeder Redis -Instanz enthält. Starten Sie den Cluster, führen Sie den Befehl erstellen aus, um einen Cluster zu erstellen und die Anzahl der Replikate anzugeben. Melden Sie sich im Cluster an, um den Befehl cluster info auszuführen, um den Clusterstatus zu überprüfen. machen

PHP: Stirbt es oder passt es sich einfach an? PHP: Stirbt es oder passt es sich einfach an? Apr 11, 2025 am 12:13 AM

PHP stirbt nicht, sondern sich ständig anpasst und weiterentwickelt. 1) PHP hat seit 1994 mehreren Versionen für die Version unterzogen, um sich an neue Technologietrends anzupassen. 2) Es wird derzeit in E-Commerce, Content-Management-Systemen und anderen Bereichen häufig verwendet. 3) PHP8 führt den JIT -Compiler und andere Funktionen ein, um die Leistung und Modernisierung zu verbessern. 4) Verwenden Sie Opcache und befolgen Sie die PSR-12-Standards, um die Leistung und die Codequalität zu optimieren.

So verwenden Sie den Befehl Redis So verwenden Sie den Befehl Redis Apr 10, 2025 pm 08:45 PM

Die Verwendung der REDIS -Anweisung erfordert die folgenden Schritte: Öffnen Sie den Redis -Client. Geben Sie den Befehl ein (Verbschlüsselwert). Bietet die erforderlichen Parameter (variiert von der Anweisung bis zur Anweisung). Drücken Sie die Eingabetaste, um den Befehl auszuführen. Redis gibt eine Antwort zurück, die das Ergebnis der Operation anzeigt (normalerweise in Ordnung oder -err).

So implementieren Sie die zugrunde liegenden Redis So implementieren Sie die zugrunde liegenden Redis Apr 10, 2025 pm 07:21 PM

Redis verwendet Hash -Tabellen, um Daten zu speichern und unterstützt Datenstrukturen wie Zeichenfolgen, Listen, Hash -Tabellen, Sammlungen und geordnete Sammlungen. Ernähren sich weiterhin über Daten über Snapshots (RDB) und appendiert Mechanismen nur Schreibmechanismen. Redis verwendet die Master-Slave-Replikation, um die Datenverfügbarkeit zu verbessern. Redis verwendet eine Ereignisschleife mit einer Thread, um Verbindungen und Befehle zu verarbeiten, um die Datenatomizität und Konsistenz zu gewährleisten. Redis legt die Ablaufzeit für den Schlüssel fest und verwendet den faulen Löschmechanismus, um den Ablaufschlüssel zu löschen.

So sehen Sie alle Schlüssel in Redis So sehen Sie alle Schlüssel in Redis Apr 10, 2025 pm 07:15 PM

Um alle Schlüssel in Redis anzuzeigen, gibt es drei Möglichkeiten: Verwenden Sie den Befehl keys, um alle Schlüssel zurückzugeben, die dem angegebenen Muster übereinstimmen. Verwenden Sie den Befehl scan, um über die Schlüssel zu iterieren und eine Reihe von Schlüssel zurückzugeben. Verwenden Sie den Befehl Info, um die Gesamtzahl der Schlüssel zu erhalten.

So starten Sie den Server mit Redis So starten Sie den Server mit Redis Apr 10, 2025 pm 08:12 PM

Zu den Schritten zum Starten eines Redis -Servers gehören: Installieren von Redis gemäß dem Betriebssystem. Starten Sie den Redis-Dienst über Redis-Server (Linux/macOS) oder redis-server.exe (Windows). Verwenden Sie den Befehl redis-cli ping (linux/macOS) oder redis-cli.exe ping (Windows), um den Dienststatus zu überprüfen. Verwenden Sie einen Redis-Client wie Redis-Cli, Python oder Node.js, um auf den Server zuzugreifen.

See all articles