首頁  >  文章  >  後端開發  >  PHP+Redis/Memcache(过期机制)实现高效限制一段时间内操作次数限制逻辑

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

WBOY
WBOY原創
2016-06-20 13:03:171147瀏覽

有时候为了限制某个用户或者某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;;
}

 


陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn