php redis解決高併發案例

2021-09-03 01:57:05 字數 1606 閱讀 4275

<?php

//本指令碼依賴 php-redis擴充套件,請自行安裝

//商品

class good

public function __get(string $name));

}throw new \exception('method not exists :'.$name);

// todo: implement __get() method.

}/**增加庫存

* @param int $count

* @return int

*/public function addstock(int $count) : int

/**減少庫存

* @param int $count

* @return int

*/public function downstock(int $count) : int

/**設定商品庫存

* @param int $count

* @return true

*/public function setstock(int $count) : int

}class user

public function __get(string $name));

}throw new \exception('method not exists :'.$name);

// todo: implement __get() method.

}}inte***ce cart

//act 搶購

class act implements cart

//商品佇列鍵

public function getgoodrediskey()

//使用者hash

public function getuserrediskey()

//初始化商品庫存到redis

public function addgoodstocktoredis()}}

//獲取redis的商品庫存數量

public function getredisgoodstock()

/**判斷使用者是否已經參與搶購了

* @return bool true為未參與

*/public function usernotbuy()

/*** 使用者搶購,減少商品庫存

* @return bool true為搶購成功

*/public function downgoodstock()

public function buy()

}}$total = 10;

$good = new good('棒棒糖', '5', $total);

$redis = new redis();

$redis->connect('127.0.0.1');

//模擬多個使用者

while($total)

搶購成功;

商品剩餘庫存:

str;

} else

$total = $good->stock;

unset($user, $activity);

}?>

003 Task併發案例

task 併發有的時候,我們我們會執行多個耗時任務,比如我們會請求兩三個介面,之後通過乙個集合來裝載所有的介面的返回值,組成乙個大的集合.如果我們使用順序執行的方式來執行這些介面,那麼需要依次等待這些介面響應完成,才能組成自己想要的結果集.這會非常的浪費時間,那有什麼辦法可以更快的拿到這些結果呢?當...

PHP Redis解決高併發下的秒殺(樂觀鎖思路)

搶購 秒殺是平常很常見的場景,面試的時候面試官也經常會問到,比如問你 中的搶購秒殺是怎麼實現的等等。搶購 秒殺實現很簡單,但是有些問題需要解決,主要針對兩個問題 一 高併發對資料庫產生的壓力 二 競爭狀態下如何解決庫存的正確減少 超賣 問題 第乙個問題,對於php來說很簡單,用快取技術就可以緩解資料...

PHP redis樂觀鎖防止高併發超賣

error level error reporting 0 con new mysqli localhost root root test if con sql select from products where id 1 result mysqli query con,sql aa mysqli...