Heim > Datenbank > Redis > Hauptteil

So verwenden Sie die verteilte Redis-Sperre in Laravel

WBOY
Freigeben: 2023-05-28 17:07:06
nach vorne
1963 Leute haben es durchsucht

Sperre erstellen

use IlluminateSupportFacadesCache;

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

Holen Sie sich die unbefristete Sperre und geben Sie sie automatisch frei

get-Methode kann einen Abschluss erhalten. Nachdem die Schließung ausgeführt wurde, gibt Laravel die Sperre automatisch frei.

Cache::lock('foo')->get(function () {
    // 获取无限期锁并自动释放...
});
Nach dem Login kopieren

Erhalten 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

Besitzergewalt ignorieren Sperre aufheben

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

Cross-Process-Management-Sperre

// 控制器中...
$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 vonSo verwenden Sie die verteilte Redis-Sperre in Laravel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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