PHP 限制访问频率,Redis 通用不限制PHP框架版,支持毫秒缓存,适用于项目的api接口限制访问频率
前言
之前“ThinkPHP6 限制访问频率,Redis版,支持毫秒缓存”针对 “ThinkPHP6 限制访问频率,Cache版”做了升级,考虑有的朋友使用的框架不是ThinkPHP6,索性再做一个PHP Redis通用版不限制PHP框架的访问频率控制类,有需要的直接拿去复用就好,非常方便。
首先我们要安装和配置好PHP Redis缓存所以需要环境条件
使用注意事项:
①系统需要安装Redis
②启用php redis扩展
PHP 简洁版Redis连接类
class Rds
{
public function connect(){
$redis = new \Redis(); //创建一个对象
$redis->connect('127.0.0.1',6379); //连接redis
$redis->auth('66666666'); //连接密码
$redis->select(0); //选择数据库(默认16个数据库,0-15,这个值可以在配置文件修改。)
return $redis;
}
}
使用方式
$redis = Rds::connect(); //连接
$redis->set('abcdefghijk',9999999); //设置值
var_dump($redis->get('abcdefghijk')); //打印值
限制访问频率代码如下,仅供参考
/**
* 检测用户接口访问频率
* $action 字符串 自定义,建议使用 模块方法名称
* $ttl 正整数 秒,默认1秒
* $uid 用户ID,针对某个用户的ID的限制
*
**/
function api_visits($action,$ttl=500,$uid='')
{
$key = "user_{$uid}_api_{$action}";
//通用版获取缓存方式
$redis = Rds::connect(); //连接
$visits = $redis->get($key);
if($visits){
return false;
}else{
//通用版设置缓存方式
$redis->psetex($key,$ttl,1);//缓存500毫秒
return true;
}
}
//使用方式:
$uid = 66;
$ttl = 500;
$visitsRes = api_visits('login_verify',$ttl,$uid);
if($visitsRes)
return $this->error('接口访问频繁,请稍后再试');
return $this->success('Success');
总结
以上就是PHP 限制访问频率,Redis 通用不限制PHP框架版,支持毫秒缓存实现过程,希望对需要的同学有所帮助。