一定期間内の特定のユーザーまたは IP ユーザーの最大操作数を制限するために、mysql を使用して各ユーザーのレコードを直接記録し、時間フィールドを使用して一定期間内の操作数をカウントすることがあります。一定の期間を制限する効率的なインターンシップと同様のロジックでは、キー/値を使用してこのロジックを効率的に完了できます。
例: ユーザーは 10 分間に最大 5 回投票できます
$redis = new Redis(); $redis_conn = $redis->connect('127.0.0.1',6379); if($redis_conn){ $result = json_decode($redis->get('test'), true); $result = is_array($result)?$result:array(); if(count($result)<5 || ($last = array_shift($result) < time()-10*60)){ array_push($result, time()); $redis->setex("test", 10*60, json_encode($result)); //echo $redis->ttl("test"); echo '投票逻辑'; }else{ echo '10分钟内投票次数已达到最大5,稍后再试!'; } }else{ echo 'Redis is gone!'; }