redis乐观锁秒杀,PHP秒杀,PHP redis秒杀,PHP redis 乐观锁秒杀
保证秒杀并发场景下库存不为负代码案例:
$key = '设置秒杀的KEY值'; $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $redis->watch($key); $sales = $redis->get($key); //库存为定值,购买后不应减。而是加销量,假设是5 $stores = 5; if ($sales >= $stores) { //这里是已售罄的业务可根据自己的业务场景构建业务 exit("已售罄"); }else { //开启事务 $redis->multi(); $redis->incrby($key, 1); $result = $redis->exec(); if ($result) { //这里是抢购成功的业务 //例如: $conn = new PDO('MysqL:host=localhost;dbname=dkysh', 'root', 'root'); //执行数据库的销量增加操作,执行订单创建等操作 $conn->query("update xs_ms set stock = stock-1 where id = 1"); } else { //这里是下单失败的业务 $redis->incrby($key, -1); exit("重新下单"); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。