用redis解决超卖
生活随笔
收集整理的這篇文章主要介紹了
用redis解决超卖
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
<?php header("Content-type:text/html;charset=utf-8"); include 'QRedis.php'; $redis = new QRedis();$type = $_GET['type']; //if:用if判斷 ,redis:用redis隊列 ,num:設置庫存 //用戶id $user_id = rand(1, 10000); //庫存 $num = 50;if ($type == 'num'){ //重新恢復庫存個數為$num和訂單隊列個數為0$redis->clearlist('goods_list');$redis->clearlist('order_user_id');for ($i = 0; $i < $num; $i++){$redis->addRlist('goods_list',1); //有多少庫存 就向key(goods_list) push多少個數,這個數沒有實際意義,僅僅代表一件庫存} var_dump($redis->listcount('goods_list')); }else if ($type == 'if'){//檢查庫存$len = $redis->listcount('order_user_id'); //這個地方就是類型統計查詢數據庫的“多線程”if($len >= $num){ exit('搶光了');}//把搶到的用戶存入到列表中$result = $redis->addRlist('order_user_id',$user_id);if($result){echo '搶購成功';} }else if ($type == 'redis'){$check = $redis->lpoplist('goods_list'); //Redis的原子操作來實現這個“單線程”if(!$check){exit('搶光了');}$result = $redis->addRlist('order_user_id',$user_id);if($result){echo '搶購成功';} } ?>?
用apache自帶工具ab.exe ?發起多并發
ab.exe -n 10000 -c 200 http://192.168.0.106:8181/redis/qianggou.php?type=if
200人訪問1w次
賣出去51個
轉載于:https://my.oschina.net/guodingding/blog/896770
總結
以上是生活随笔為你收集整理的用redis解决超卖的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据、AI“武装”企业服务:风控、检索
- 下一篇: Linux安装rpc监控系统资源