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