protected function queue() { //生成下一分鐘的redis隊列 $nextMinute = date("Y-m-d H:i", strtotime("+1 minute")); $time = strtotime($nextMinute); for ($i = 0; $i <= 60; $i++) { $redis_key = $time + $i; $redis_key = 'miniproduct:legtype:' . $redis_key; $redisListData = [0, 1, 2, 2, 3, 3, 0, 1, 2, 2, 3, 3, 0, 1, 2, 2, 3, 3, 0, 1, 2, 2, 3, 3, 0, 1, 2, 2, 3, 3]; shuffle($redisListData); Cache::store('redis')->handler()->lpush($redis_key, ...$redisListData); Cache::store('redis')->handler()->expire($redis_key, 120); } echo '執行成功'; }
//QPS限制判斷 $redis_key = "miniproduct:legtype:" . time(); $index = Cache::store('redis')->handler()->lpop($redis_key); if (is_numeric($index)) { //相關業務 } else { return ResponseHelper::returnJson(-1, "當前請求人數過多,請稍後重試!", []); }