由于数据库查询的及插入的操作 耗费的实际时间要耗费比redis 要多,
导致 多人查询时库存有,但是实际插入数据库时却超卖
redis 会有效的减少相关的延时,对于并发量相对较少的 可以一用
1 public function buy($goods_id = 0){ 2 if(!$goods_id){ 3 die("商品不存在!"); 4 } 5 $redis = new Redis(); 6 $redis->connect('127.0.0.1',6379); 7 $stock = 0; 8 if(!$redis->get("gid".$goods_id)){ 9 $stock = get_stock($goods_id); //从数据看获取实际库存 10 $redis->set("gid".$goods_id,$stock); 11 }else{ 12 $stock = $redis->get("gid".$goods_id); 13 } 14 15 if($stock > 0){ 16 //逻辑操作 代码 17 //coding here... 18 set("gid".$goods_id,$stock-1); 19 }else{ 20 die("已卖完!"); 21 } 22 }