Heim > Artikel > PHP-Framework > Ausführliche Erklärung zur Verwendung verteilter Redis-Sperren in Laravel (mit Codebeispielen)
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 Sperreuse IlluminateSupportFacadesCache;
$lock = Cache::lock('foo', 10);
if ($lock->get()) {
// 处理业务逻辑
sleep(3);
$lock->release();
}
Die Get-Methode kann einen Abschluss empfangen. Nachdem der Abschluss ausgeführt wurde, gibt Laravel die Sperre automatisch frei. [Verwandte Empfehlungen:
Laravel-Video-Tutorial]Cache::lock('foo')->get(function () {
// 获取无限期锁并自动释放...
});
use IlluminateContractsCacheLockTimeoutException;
$lock = Cache::lock('foo', 10);
try {
$lock->block(5);
echo "5秒时间内成功获取锁...";
} catch (LockTimeoutException $e) {
echo "5秒时间内获取锁失败...";
} finally {
optional($lock)->release();
}
oder
Cache::lock('foo', 10)->block(5, function () { echo "5秒时间内成功获取锁..."; });Ignorieren Sie den Besitzer und erzwingen Sie die Freigabe der Sperre
Cache::lock('foo')->forceRelease();
// 控制器中...
$podcast = Podcast::find($id);
$lock = Cache::lock('foo', 120);
if ($result = $lock->get()) {
ProcessPodcast::dispatch($podcast, $lock->owner());
}
// 队列任务中...
// 使用锁名称和拥有者重新获取锁实例后再释放
Cache::restoreLock('foo', $this->owner)->release();
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!