redis乐观锁实现秒杀php,php+redis 乐观锁解决秒杀超卖问题

$redis = new Redis();

try {

$redis->connect('127.0.0.1', 6379);

// 监视key

$redis->watch('Stock');        //监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断

$sales = $redis->get('Stock');

$kucun = 10;      //数据库表里的商品库存数量

if($sales >= $kucun){

exit('秒杀结束');

}

//开启redis事务块

$redis->multi();   //事务块内的多条命令会按照先后顺序被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。

$redis->set('Stock',$sales+1);

$res = $redis->exec();

if($res){

include 'db.php';

$sql = "update products set stock=stock-1 where id=1";

if($pdo->exec($sql)){

echo '完成';

}

}

} catch (Exception $e) {

echo '连接失败';

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值