redis类型 tp5_redis tp5 api接口限流

先写一个基类,让所有的api的控制器都继承它,并且写一个_initialize方法,这是tp5的方法,执行其他方法前,会自动调用,类似于php的构造方法,我们可以获取请求者的ip,md5一下作为我们redis存储的key

然后去redis里用get去取,如果取到了值,则去判断是否为空,如果为空,则说明该ip第一次请求接口,则设置用set方法设置初始值为0,并且设置有效时间,如果不为空,并且大于了我们设置的请求次数,则不进行数据库操作,直接返回提示,如果小于我们设置的请求次数,则自增1namespace app\api\controller;

use \think\Controller;

use think\cache\driver\Redis;

class Check extends Controller

{

protected function _initialize(){

//api接口限流

$num = config('api_num');//每多少秒可以请求的次数

$time = config('api_time');//多少秒内

$ip = get_client_ip();

$redis_key = md5($ip);

$redis = new Redis();

$count = $redis->get($redis_key);

if(empty($count)){

$redis->set($redis_key,1,$time);

}else if($count >= $num){

msg(0,'请求频率太高,请重试');

}else{

$redis->inc($redis_key);

}

}

}版权属于:本文是原创文章,版权归 吾梦小站 所有。

本站所有原创文章采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

您可以自由地转载和修改,但请务必注明文章来源并且不可用于商业目的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值