PHP+非關資料庫實現秒殺功能
這篇文章主要為大家詳細介紹了php+redis實現商城秒殺功能,具有一定的參考價值,感興趣的小夥伴們可以參考一下
1、安裝redis,根據自己的php版本安裝對應的redis擴展(此步驟簡單的描述一下)
1.1.安裝php_igbinary.dll,php_redis.dll擴展此處需要注意你的php版本如圖:
1.2.php.ini文件新增extension=php_igbinary.dll;extension=php_redis.dll兩處擴展
ok此處已經完成第一步redis環境搭建完成看看phpinfo
2、項目中實際使用redis
2.1.第一步配置redis參數如下,redis安裝的默認埠為6379:
Advertisements
2.2.實際函數中使用redis:
2.3.秒殺的核心問題是在大併發的情況下不會超出庫存的購買,這個就是處理的關鍵所以思路是第一步在秒殺類的先做一些基礎的數據生成:
2.4. 第二步就是關鍵所在,用戶在進入商品詳情頁前先將當前商品的庫存進行隊列存入redis如下:
接下來要做的就是用ajax來非同步的處理用戶點擊購買按鈕進行符合條件的數據進入購買的排隊隊列(如果當前用戶沒在當前產品用戶的隊列就進入排隊並且pop一個庫存隊列,如果在就拋出,):
附加一個調試的函數,刪除指定隊列值:
走到此處的時候秒殺的核心基本就完了,細節還需要自己在去完善,像購物車這邊的處理還有訂單的處理,好吧開始跑程序利用apache自身的ab可以進行簡單的模擬併發測試如下:
Advertisements
跑起來,我擦跑步起來redis沒有任何反應,此時還少一步重要的步驟就是開啟redis服務,請根據自己的系統下一個redisbin_x32或者redisbin_x64的redis服務管理工具,點擊redis-server.exe,ok至此全部完成如下圖: