站長資訊網
        最全最豐富的資訊網站

        PHP+Redis解決訂單限流的實際問題

        1、本系列文章每期都將解決一個Redis實際問題
        2、每期問題將在每期的評論中選取
        3、問題限Redis相關,其它問題如果本人感興趣也不排除開辟新系列
        4、本人常用PHP所以解決方案以PHP為主
        5、評論里沒有合適的提問時我會自己給自己出題

        問題描述:

        本期為第一期,所以只能自己出題了

        如何用Redis給訂單限流,如每M秒允許N個訪問

        解決方案:

        <?php      /**      * 是否允許放行      * @param string $key       redis鍵前綴      * @param int $timeInterval 時間間隔(秒)      * @param int $max          時間間隔內最大放行數      * @return bool             是否放行      * @throws Exception      * @example      * <pre>      * //每秒放行一個      * isAllow('my_allow');      *      * //每秒放行3個      * isAllow('my_allow',1,3);      *      * //每3秒放行2個      * isAllow('my_allow',3,2);      */     function isAllow(string $key, int $timeInterval=1, int $max=1):bool{         if($timeInterval<1){             throw new Exception('時間間隔必須大于0');         }         if($max<1){             throw new Exception('最大放行數必須大于0');         }          $redis=new Redis();         $redis->connect('192.168.31.187');         if(!$redis->isConnected()){             throw new Exception('Redis服務連接失敗');         }          //對時間戳取模,使得每$timeInterval秒取得同一個時間戳         $time=time();         $key.=':'.($time-($time%$timeInterval));          //自增并返回自增后的結果         $index=$redis->incr($key);          //如果是第一個訪問,設置鍵的過期時間         if($index===1){             $redis->expire($key,$timeInterval+1);         }          return $index<$max+1;     }

        代碼解讀:

        • 對時間取模,使得鍵名每$timeInterval秒更新一次

        • incr()方法自增鍵的值,如果鍵不存在則先創建一個值為0的鍵再進行自增

        • 根據自增原理,同鍵名下第N次自增返回的值就是N

        • 鍵名每$timeInterval秒更新一次,所以在創建鍵的$timeInterval+1秒后鍵就不再有價值

        以上,歡迎大家提問、糾錯、補充、優化。

        推薦:《PHP視頻教程》

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 午夜不卡久久精品无码免费| 国产精品一在线观看| 精品视频无码一区二区三区| 国产精品视频色视频| 精品乱码久久久久久久| 欧美日韩在线精品一区二区三区激情综合 | 久久99精品久久久久子伦| 久久精品国产一区二区电影| 亚洲精品综合一二三区在线| 97久久超碰国产精品2021| 色欲久久久天天天综合网精品| 亚洲AV无码乱码精品国产| 国产午夜精品久久久久九九| 欧美精品华人在线| 国产精品久久久久9999高清| 国产精品亚洲A∨天堂不卡| 亚洲AV永久无码精品成人| 亚洲日韩欧美制服精品二区| 免费看一级毛片在线观看精品视频 | 久久996热精品xxxx| 国产精品V亚洲精品V日韩精品| 色综合久久综精品| 亚洲精品理论电影在线观看| 久久精品国产99国产精偷 | 精品国产污污免费网站入口在线 | 国产成人精品高清在线观看93| 日韩精品中文字幕无码一区| 午夜天堂精品久久久久| 日韩精品一区二区亚洲AV观看| 在线观看亚洲精品福利片 | 国产精品成人一区二区| 国产精品欧美久久久久无广告| 国产精品成人99久久久久| 国产成人精品日本亚洲专区 | 亚洲韩国精品无码一区二区三区| 日韩精品一区二区三区中文字幕| 免费看一级毛片在线观看精品视频 | 久久福利青草精品资源站| 精品国产品香蕉在线观看75| 久久精品国产一区| 国产成人高清精品一区二区三区|