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中如何添加呢?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

4年前 评论
讨论数量: 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); }

4年前 评论

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

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

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