ThinkPHP6 限制访问频率,Redis版,支持毫秒缓存

ThinkPHP6 限制访问频率,Redis版,支持毫秒级缓存,适用于项目的api接口限制访问频率

前言

针对 “ThinkPHP6 限制访问频率,Cache版”做的升级,有需要的直接拿去复用就好,非常方便。

其他框架可以参考
PHP 限制访问频率,Redis 通用不限制PHP框架版,支持毫秒缓存

首先我们要设置ThinkPHP6的Cache缓存方式

文件路径:config/cache.php
ThinkPHP6 限制访问频率,Redis版,支持毫秒缓存_第1张图片
cache.php代码


return [
    // 默认缓存驱动
    'default' => env('cache.driver', 'redis'),
    // 缓存连接方式配置
    'stores'  => [
        'file' => [
            // 驱动方式
            'type'       => 'File',
            // 缓存保存目录
            'path'       => '',
            // 缓存前缀
            'prefix'     => '',
            // 缓存有效期 0表示永久缓存
            'expire'     => 0,
            // 缓存标签前缀
            'tag_prefix' => 'tag:',
            // 序列化机制 例如 ['serialize', 'unserialize']
            'serialize'  => [],
        ],
        // 更多的缓存连接
        'redis'   =>  [
            'type'   => 'redis',// 驱动方式
            'host'       => '127.0.0.1',// 服务器地址
            'select'     => 0,//选择库
            'port'       => 6379,// 端口
            'password'   => 'password0000',// 密码
        ],
    ],
];

使用注意事项:

①系统需要安装Redis
ThinkPHP6 限制访问频率,Redis版,支持毫秒缓存_第2张图片
②启用php redis扩展

在这里插入图片描述

限制访问频率代码如下,仅供参考



/**
* 检测用户接口访问频率
* $action 字符串 自定义,建议使用 模块方法名称
* $ttl 正整数 秒,默认1秒
* $uid 用户ID,针对某个用户的ID的限制
* 
**/

function api_visits($action,$ttl=500,$uid='')
{


    $key = "user_{$uid}_api_{$action}";

    $visits = Cache::get($key);

    if($visits){

        return false;

    }else{

        Cache::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');

总结

以上就是ThinkPHP6 限制访问频率的 Redis版实现过程,希望对需要的同学有所帮助。

你可能感兴趣的:(ThinkPHP6,Centos,PHP,redis,缓存,数据库)