$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 '连接失败';
}