代码:

 <?php

 /**
*
*/
class myRedis {
private static $redis = null; /**
* @return null|Redis
*/
public static function instance() {
if(self::$redis === null) {
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
self::$redis = $redis;
}
return self::$redis;
} /**
* @param $api
* @param string $default
* @return string
*/
private static function getApiLimit($api, $default = '3000') {
$info = [
'user.info' => '500',
'user.login' => '1000'
];
return isset($info[$api]) ? $info[$api] : $default;
} /**
* @return bool
*/
public static function check() { $redis = self::instance();
$api = "md5_check";
$time = self::getApiLimit($api);
$key = "api_limit_" . $api; $num = $redis->incr($key); if($num == 1) {
$redis->pExpire($key, $time);
} else {
// echo "false";
return false;
}
// echo "true";
return true;
}
}

只要在需要限制访问频率的接口处加上 myRedis::check() 即可限制该接口访问平率为 2s 一次

不难发现此代码的逻辑非常简单:

设置 key 的有效时间为 2s,当 key 过期后执行 $redis->incr($key); 的结果为 1,所以,每次 $redis->incr($key); 结果为 1,则说明距离上一次访问达到了 2s,重新设置 key 的有效时间并返回 true 即可,其余情况则返回 false。

redis 限制接口访问频率的更多相关文章

  1. Redis 实现接口访问频率限制

    为什么限制访问频率 做服务接口时通常需要用到请求频率限制 Rate limiting,例如限制一个用户1分钟内最多可以范围100次 主要用来保证服务性能和保护数据安全 因为如果不进行限制,服务调用者可 ...

  2. beego:限制接口访问频率

    package utils import ( "github.com/astaxie/beego" "github.com/astaxie/beego/context&q ...

  3. Redis实战(十五)Redis实现接口调用频率限制

    序言 登录次数 资料

  4. laravel 5.6 API 接口开发限制接口访问频率

    在laravel 5.6及以上版本中框架中已自带ThrottleRequests,但是为了更好的处理消息,我们可以再新加一个中间件,来更方便的处理相应信息 第一步: php artisan make: ...

  5. Redis应用之[限制访问频率]

      我们知道当网站的访问量突然很大的时候肯定会对服务器造成影响,甚至无法访问,如果是正常的访问那么很好说明业务量增大可以考虑系统的扩展,但是如果是搜索引擎爬虫频繁访问或是一些恶意访问,那这时候我们就应 ...

  6. nginx lua redis 访问频率限制(转)

    1. 需求分析 Nginx来处理访问控制的方法有多种,实现的效果也有多种,访问IP段,访问内容限制,访问频率限制等. 用Nginx+Lua+Redis来做访问限制主要是考虑到高并发环境下快速访问控制的 ...

  7. Django REST framework 自定义(认证、权限、访问频率)组件

    本篇随笔在 "Django REST framework 初识" 基础上扩展 一.认证组件 # models.py class Account(models.Model): &qu ...

  8. C#.NET 大型企业信息化系统集成快速开发平台 4.2 版本 - 访问频率限制功能实现、防止黑客扫描、防止恶意刷屏

    很多软件组件,大家都能想到了,大家也能做出来,但是成熟稳定.可靠.易用.功能全面,可信任,可相信,可开源就不是很容易,需要树立良好的口碑才可以. 1:往往会有黑客,进行撞库挖掘漏洞,很多系统的账户有可 ...

  9. WebApi接口访问频率控制的实现

    关于限流的文章,博客园内还是有挺多的.本文做了一个基于Filter限流的例子,算是对WebApiThrottle使用的一个具体的实例. 实现方法: 1.使用Nuget,对WebAPI项目添加WebAp ...

随机推荐

  1. DEV上肤

    1,在Main中加入此语句DevExpress.UserSkins.BonusSkins.Register();SkinManager.EnableFormSkins();DevExpress.Loo ...

  2. 认识单元测试(jar包资源网址:http://search.maven.org/)

    单元测试在3.8版本以前只需要导入一个jar包,3.8版本以后需要导入二个jar包.(网址:http://junit.org/junit4/) package com.huawei.junit; im ...

  3. MySQL内置功能之事务、函数和流程控制

    主要内容: 一.事务 二.函数 三.流程控制 1️⃣  事务 一.何谓事务? 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. # ...

  4. 高性能Web服务器Nginx的配置与部署研究(7)核心模块之主模块的非测试常用指令

    1. error_log 含义:指定存储错误日志的文件 语法:error_log <file> [debug|info|notice|warn|error|crit] 缺省:${prefi ...

  5. 解剖Nginx·自动脚本篇(4)工具型脚本系列

    目录 auto/have 向自动配置头文件追加可用宏定义(objs/ngx_auto_config.h) auto/nohave 向自动配置头文件追加不可用宏定义(objs/ngx_auto_conf ...

  6. MobileMovieTexture播放视频

    MobileMovieTexture插件支持IOS系统播放视频文件.简单,方便

  7. 301. Remove Invalid Parentheses去除不符合匹配规则的括号

    [抄题]: Remove the minimum number of invalid parentheses in order to make the input string valid. Retu ...

  8. 525. Contiguous Array两位求和为1的对数

    [抄题]: Given a binary array, find the maximum length of a contiguous subarray with equal number of 0 ...

  9. HowTo: Xen 4.1.3 Windows 8 HVM domU with Intel HD4000 VGA Passthrough on Debian Wheezy

    http://linux-bsd-sharing.blogspot.com/2012/10/howto-xen-413-windows-8-hvm-domu-with.html Update 05/0 ...

  10. js常用utils

    var utils = { /** * 日期格式化 * * @param {Date} date 指定日期 * @param {String} format * @returns {String} * ...