这里写问题描述
$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的数据,大家看下有问题吗?还有什么优化的?
你的更好些
这玩意最好用lua写,这么写没有原子性
有吧?setNx
我是PHP的
lua是什么语言
https://www.workerman.net/plugin/56 试试这个插件
好的,我看看,谢谢
我写了个稍微复杂的:
https://github.com/ichynul/php-redis-lock.git