zoukankan      html  css  js  c++  java
  • redis 频率限制

    方式1:

    $redis = new Redis();
    
    //以自然时间控制 一自然分钟内超过100次进行限制, 屏蔽多久的时间必须为计数key时间的倍数
    $key = 'xxxx'.date('Y-m-d H:i:s');
    $fkey = 'xxxx';//屏蔽key
    
    if(false !== $redis->set($fkey))
    {
        return false;
    }
    

    /////
    //更优的处理方式
    if($num === false)
    {
    $redis->set($key, 1, array('NX', 'PX' => 60));
    }else{
    $redis->incr($key);
    }
    /////

    if($num = $redis->get($key)>100)
    {
        $redis->set($fkey,true,60);
    
    }else{
        $redis->incr($key);
        if($num == 1)
        {
            $redis->expire($key, 60); //保持跟自然间隔时间相同
        }
    }

    方式2:

    //以持续时间控制 一分钟内超过100次进行限制, 屏蔽多久的时间必须大于 计数key的时间,否则会计数出错
    $key = 'xxxx';
    if($redis->get($key)>100)
    {
    
    }else{
        $redis->incr($key);
        if($num == 1)
        {
            $redis->expire($key, 60);
        }
    }

    每个指定自然秒

    //根据每隔多少自然秒生成key
    function getZiRanKey($sec) {
        
    //     $time = strtotime('2017-04-23 17:30:04');
        $time = time();
        $time = $time - ($time%$sec);
        return date('Y-m-d H:i:s',$time);
       
    }
  • 相关阅读:
    熟悉中的应用与调整
    跨域
    Office办公软件操作技巧 office快捷键大全
    ROS入门介绍
    ROS开发指令
    ROS中msg和srv文件的区别
    package.xml使用说明
    Python的内置数据结构
    Python异常处理
    工作后的第二个任务(项目)
  • 原文地址:https://www.cnblogs.com/siqi/p/6753284.html
Copyright © 2011-2022 走看看