使用 redis 減少 秒殺庫存 超賣思路
阿新 • • 發佈:2019-01-10
由於資料庫查詢的及插入的操作 耗費的實際時間要耗費比redis 要多,
導致 多人查詢時庫存有,但是實際插入資料庫時卻超賣
redis 會有效的減少相關的延時,對於併發量相對較少的 可以一用
public function buy($goods_id = 0){
if(!$goods_id){
die("商品不存在!");
}
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$stock = 0;
if(!$redis->get("gid".$goods_id)){
$stock = get_stock($goods_id); //從資料看獲取實際庫存
$redis->set("gid".$goods_id,$stock);
}else{
$stock = $redis->get("gid".$goods_id);
}
if($stock > 0){
//邏輯操作 程式碼
//coding here...
set("gid".$goods_id,$stock-1);
}else{
die("已賣完!");
}
}