gpt4 book ai didi

PHP, Redis, 锁产品,涨价后解锁

转载 作者:可可西里 更新时间:2023-11-01 11:38:57 25 4
gpt4 key购买 nike

我有一个问题,我现在在一个在线游戏中工作,例如,如果用户以 5 美元的价格购买产品,则价格上涨并且该用户是新所有者,然后下一个用户可以从当前所有者那里以 6 美元的价格购买它...这种情况每秒都会发生很多次。为了避免不止一个用户同时购买产品,我添加了一个 redis 标志,例如:

buyAction($product_id,...){
$lock_id = "buy_".$product_id;
$is_locked = Predis_Interface::get($lock_id);
if($is_locked) {
die();
} else {
Predis_Interface::set($lock_id, true);
}
...
// add it to a worker query...
// if the worker query is finished with this product, it set the lock_id to false
// Predis_Interface::set($lock_id, false)


}

但问题是,有时会有不止一个用户以 5 美元的价格购买同一产品。因此,两个买家都少了 5 美元,但只有一个买家有产品...

我希望有人能帮我解决这个问题。

最佳答案

谢谢伊塔马尔,

你的回答帮助我找到了解决方案,我现在使用:

$lock_id = "buy_".$product_id;
if (!$redis->setnx($lock_id, true)) {
die();
}

这修复了设置和读取之间的间隔,并且只有在设置成功时才返回 true。

然后在查询工作器上,我将其删除:

$lock_id = "buy_".$product_id; 
$redis->del($lock_id)

关于PHP, Redis, 锁产品,涨价后解锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27092503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com