大家看我这个并发锁控制怎么样?

问题描述

这里写问题描述

$is_lock = Redis::setNx($edit_id, $uid);
//并发锁(设置成功,返回 1 。 设置失败,返回 0 。)
if ($is_lock === 1) {
    //操作更新数据库
    .............
    //释放并发锁
    Redis::del($edit_id);
}else {
    //防止死锁(5秒释放锁)
    Redis::expire($edit_id, 5);
    return json(['status' => 201, 'msg' => '活动太火爆啦,请稍候再试~']);
}

防止高并发,多个用户同时编辑$edit_id的数据,大家看下有问题吗?还有什么优化的?

854 3 1
3个回答

鲁达
$is_lock = Redis::setNx($edit_id, $uid);
//并发锁(设置成功,返回 1 。 设置失败,返回 0 。)
if ($is_lock === 1) {
    //防止死锁(5秒释放锁)
    Redis::expire($edit_id, 5);

    //操作更新数据库
    .............
    //释放并发锁
    Redis::del($edit_id);
}else {
    return json(['status' => 201, 'msg' => '活动太火爆啦,请稍候再试~']);
}
yzh52521
ichynul

我写了个稍微复杂的:
https://github.com/ichynul/php-redis-lock.git

  • 暂无评论
年代过于久远,无法发表回答
🔝