详解Laravel中如何使用Redis分布式锁+代码实例(redislua实现分布式锁)

admin1415056年前0条评论

一淘模板给人人介绍对于于在laravel中怎样应用Redis散布式锁的(原子锁lockblockrelease),希望对于需要的朋侪有所帮助!

详解Laravel中如何使用Redis分布式锁+代码实例(redis lua实现分布式锁) 技术教程

建立锁

use IlluminateSupportFacadesCache; $lock = Cache::lock('foo', 10);if ($lock->get()) {// 解决营业逻辑sleep(3);$lock->release();}

获取有限期锁并主动开释

get方法能够接受一个闭包。在闭包实行以后,Laravel 将会主动开释锁。

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();}

或者

Cache::lock('foo', 10)->block(5, function () {echo "5秒时日内胜利获取锁...";});

重视领有者强迫开释锁

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();

 

你可能想看:

本文链接:https://addon.ciliseo.com/xiang-jie-laravel-zhong-ru-he-shi-yong-redis-fen-bu-shi-suo-dai-ma-shi-li.html

LaravelRedis分布式锁分布式如何使用详解实例代码Redis时间内将会给大家队列原子逻辑器中使用如何

网友评论

扫一扫二维码添加客服微信

关于我们建站招商建站服务