Heim > PHP-Framework > Laravel > Ausführliche Erklärung zur Verwendung verteilter Redis-Sperren in Laravel (mit Codebeispielen)

Ausführliche Erklärung zur Verwendung verteilter Redis-Sperren in Laravel (mit Codebeispielen)

藏色散人
Freigeben: 2022-11-06 16:09:09
nach vorne
2083 Leute haben es durchsucht

In der folgenden Kolumne erfahren Sie, wie Sie Redis Distributed Lock (Atomic Lock Lock Block Release) in Laravel aus der Kolumne „Laravel Tutorial“ verwenden. Ich hoffe, dass es für Freunde hilfreich ist, die es benötigen!

Erstellen Sie eine Sperre

use IlluminateSupportFacadesCache;

$lock = Cache::lock('foo', 10);
if ($lock->get()) {
    // 处理业务逻辑
    sleep(3);
    $lock->release();
}
Nach dem Login kopieren

Erhalten Sie eine unbefristete Sperre und geben Sie sie automatisch frei.

Die Get-Methode kann einen Abschluss empfangen. Nachdem der Abschluss ausgeführt wurde, gibt Laravel die Sperre automatisch frei. [Verwandte Empfehlungen:

Laravel-Video-Tutorial

]

Erwerben Sie die Sperre innerhalb der angegebenen Zeit

use IlluminateContractsCacheLockTimeoutException;

$lock = Cache::lock('foo', 10);
try {
    $lock->block(5);
    echo "5秒时间内成功获取锁...";
} catch (LockTimeoutException $e) {
    echo "5秒时间内获取锁失败...";
} finally {
    optional($lock)->release();
}
Nach dem Login kopieren
oder

Cache::lock('foo', 10)->block(5, function () {
    echo "5秒时间内成功获取锁...";
});
Nach dem Login kopieren

Ignorieren Sie den Besitzer und erzwingen Sie die Freigabe der Sperre

Cache::lock('foo')->forceRelease();
Nach dem Login kopieren

Verwalten Sie Sperren prozessübergreifend

// 控制器中...
$podcast = Podcast::find($id);
$lock = Cache::lock('foo', 120);
if ($result = $lock->get()) {
    ProcessPodcast::dispatch($podcast, $lock->owner());
}

// 队列任务中...
// 使用锁名称和拥有者重新获取锁实例后再释放
Cache::restoreLock('foo', $this->owner)->release();
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Erklärung zur Verwendung verteilter Redis-Sperren in Laravel (mit Codebeispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:learnku.com
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