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

这两天在看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();
# }
#}
```

    A+
发布日期:2022年09月06日  所属分类:未分类

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: