PHP+Redis/Memcache(过期机制)实现高效限制一段时间内操作次数限制逻辑

WBOY
Freigeben: 2016-06-20 13:03:17
Original
1147 Leute haben es durchsucht

有时候为了限制某个用户或者某ip用户一段时间内最大操作次数,我们可能会用mysql直接记录每次的用户的记录,通过time时间字段来统计某时间段操作次数来限制,为了高效的实习类似的逻辑,我们可以使用key/value,高效完成这种逻辑。

例如实现:一个用户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 &#39;投票逻辑&#39;;
    
    }else{
        echo &#39;10分钟内投票次数已达到最大5,稍后再试!&#39;;
    }
}else{
    echo &#39;Redis is gone!&#39;;
}
Nach dem Login kopieren

 


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!