redis高併發之秒殺活動解決方案

2021-10-06 08:27:33 字數 1072 閱讀 6373

我們模擬10w個人一瞬間湧入頁面進行秒殺,能夠秒殺成功的只有10人。我們把先進來的使用者放入redis佇列中,當佇列中的使用者達到10人時,後面的使用者跳轉到秒殺結束頁面。這裡用隨機數來表示不同的使用者。

header("content-type:text/html;charset=utf-8");

$redis = new redis();

$redis->connect("localhost", "6379");

$redis->select(1);

$redis_name = "miaosha";

$num = 10;//表示會有10人秒殺成功

$i = 100000;//模擬10w人瞬間過來訪問時

$n = 0;//用來驗證程式執行時資料量是否正確

由上圖我們可以看出,秒殺成功的第乙個使用者的id是813696,秒殺成功的最後乙個使用者是909772;參與秒殺人數總共是10w。

從佇列中把秒殺成功的10個使用者取出來,觀察第乙個使用者和最後乙個使用者是否跟之前的記錄值一樣。  

header("content-type:text/html;charset=utf-8");

$redis = new redis();

$redis->connect("localhost", "6379");

$redis->select(1);

$redis_name = "miaosha";

while ($redis->llen($redis_name) > 0)

$redis->close();

由上圖我們可以看出,秒殺成功的第乙個使用者的id是813696,秒殺成功的最後乙個使用者是909772;可以看出結果是很準確的。

活動秒殺解決併發問題

一 秒殺帶來了什麼?秒殺或搶購活動一般會經過 預約 搶訂單 支付 這3個大環節,而其中 搶訂單 這個環節是最考驗業務提供方的抗壓能力的。搶訂單環節一般會帶來2個問題 1 高併發 2 超賣 任何商品都會有數量上限,如何避免成功下訂單買到商品的人數不超過商品數量的上限,這是每個搶購活動都要面臨的難題。二...

高併發下商城秒殺活動的處理

秒殺搶購活動是現在很多 常見的營銷手段,小公尺搶購 的整點免單 聚划算等都是成功的例子。從簡單處著手,秒殺是很好理解的 設定要秒殺的商品的數量,搶完為止。但是,實際應用中一瞬間的高併發壓力 以及併發帶來的負庫存是要著重考慮。要避免負庫存的出現,可以在資料庫加鎖,不管外部多少請求,都可以在資料庫操作前...

php高併發秒殺解決方案

在秒殺 搶火車票等地方,我們通常用遇到這樣高併發的問題,下面提供了四種解決方案 1 使用檔案鎖 php view plain copy fp fopen order.lock r if flock fp,lock ex fclose fp 2 使用訊息佇列 我們常用到memcacheq radis。...