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

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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); }

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

3年前 评论

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

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

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