laravel框架中Cache缓存类中的原子锁Cache::lock()

发布时间:2022-09-06 19:08:00 阅读:2011次

这两天在看laravel的redis

发现Cache::lock

在后端开发中,关于锁的问题,也是经常能遇到的。为了防止程序并行所导致的数据破坏,或者系统故障,在开发中合理的运用锁,可以带来更好的效果。

你可以通过 Cache::lock 方法来创建和管理锁:

if (Cache::lock('foo', 10)->get()) {
    // 锁住这个key 10秒的时间
    // 然后我们可以接着自己实际项目中的相关操作
    Cache::lock('foo')->release();//一定要在结尾处释放锁,不然会导致别的并行或后续请求一直无法获取锁而停滞
}

https://blog.csdn.net/weixin_40534405/article/details/122243858

#try{
#   $lock_key = "invoice:store:uid";
#   $isLocked = Cache::lock($lock_key)->get();    //创建锁
#   if (!$isLocked) {
#           //error_log("locking\r\n", 3,'/tmp/1.log' );
#           throw new \Exception('出错');
#   }
#   $good = new Good();
#   $count = Good::where('product_id',1)->count();
#   $remain_count = 3;
#    if($remain_count - $count  insert(['product_id' => 1,'addtime'=>date('Y-m-d H:i:s')]);
#} catch (\Exception $e) {
#    error_log($e->getMessage()."\r\n", 3,'/tmp/1.log' );
#} finally {
#   if ($isLocked) {
#           error_log("unlock\r\n", 3,'/tmp/1.log' );
#           Cache::lock($lock_key)->release();
#   }
#}

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:laravel框架中Cache缓存类中的原子锁Cache::lock() 出自老鄢博客 | 欢迎分享