laravel中如何设置redis分布式锁

我以前在tp中是这么写的
$lock = Cache::store(‘redis’)->handler()->set($lockkey, $lockval, [‘NX’, ‘EX’ => 30]);
这样就建立一个锁
删除锁用lua脚本删除
$script = “if redis.call(‘get’, KEYS[1]) == ARGV[1] then return redis.call(‘del’, KEYS[1]) else return 0 end”;
但在laravel中如何添加呢?

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

function lock($key, $val) { $script = "return redis.call('SET', KEYS[1], ARGV[1], 'NX', 'EX', ARGV[2])"; $lock = Redis::eval($script, 1,$key, $lval, 30);//30是锁过期时间 } //解锁 function unlock($key, $val) { $script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end"; return Redis::eval($script, 1,$key, $val); }

2年前 评论
讨论数量: 3

function lock($key, $val) { $script = "return redis.call('SET', KEYS[1], ARGV[1], 'NX', 'EX', ARGV[2])"; $lock = Redis::eval($script, 1,$key, $lval, 30);//30是锁过期时间 } //解锁 function unlock($key, $val) { $script = "if redis.call('get', KEYS[1]) == ARGV[1] then return redis.call('del', KEYS[1]) else return 0 end"; return Redis::eval($script, 1,$key, $val); }

2年前 评论

有没有一种可能,就是 Laravel 已经做了这个。。

Cache::lock();
2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!