<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ## 高并發商品秒殺情況下,如何防止庫存超支? > 1. 使用MYSQL悲觀鎖(容易死鎖)或者樂觀鎖。 > 2. 消息隊列解決 > 3. REDIS分布式鎖 ### 1. REDIS分布式鎖 > 分布式鎖具有 **排他性**、**避免死鎖** 等特性 > **SETNX (排他性)** :Not Exists (只有該key不存在,才能設置成功) > **SETEX (避免死鎖)** :EXPIRE(設置該KEY過期時間,防止死鎖問題) > 因為 SET 命令可以通過參數來實現和 SETNX 、 SETEX 結合命令效果 > SET mykey "value" NX EX 10 ~~~ public function test() { $result = $this->checkManyCommitByRedis('test_commit'.$uid); //防止高并發 if ($result == false) { exit('不要頻繁操作喲'); } // TODO.... // 成功后切勿不要釋放該鎖,不然會引發TODO...流程中執行過長時間(鎖失效),下一個請求來了加鎖后,上一個請求成功執行釋放鎖,就影響了下一個請求的正常邏輯 } // 防止用戶頻繁提交 function checkManyCommitByRedis($key,$set_redis_time=3) { if (!\Yii::$app->redis->set($key,1,['NX', 'EX' => $set_redis_time])) {//key存在 return false; } return true; } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看