1. 程式人生 > 資料庫 >使用Redis實現秒殺系統防止超賣保護資料庫

使用Redis實現秒殺系統防止超賣保護資料庫

  • 如何減小資料庫壓力?
    使用列表或集合,預先存入n個令牌值,到來的請求使用SPOP或者LPOP拿取令牌,拿到以後才可以進行資料庫操作。這可以避免資料庫接收到過多的請求;
  • 如何防止超賣?
    - 樂觀鎖:在表內增加version欄位,每次修改時增加對前一次讀到的version的判斷及新version的更新,如果version不匹配,則修改失敗,重讀version重試;
    - 悲觀鎖:使用排他鎖
  • 如何防止惡意多次搶購?
    使用SETNX,將使用者ID作為鍵值,如果返回新增成功(1)表示是初次訪問,否則拒絕後續訪問。為該鍵值設定過期時間即可限制多久可以訪問一次。