php基于redis实现单位时间内执行次数限制的限流代码

代码语言:phpcli

所属分类:其他

代码描述:php基于redis实现单位时间内执行次数限制的限流代码

代码标签: php 基于 redis 单位 时间 执行 次数 限制 限流 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<?php
class RateLimiter {
    private $redis;
    private $maxRequests;
    private $timeWindow;

    public function __construct($maxRequests, $timeWindow) {
        $this->redis = new Redis();
        $this->redis->connect('127.0.0.1', 6379);
        $this->maxRequests = $maxRequests;
        $this->timeWindow = $timeWindow;
    }

    public function isAllowed($userId) {
        $key = "rate_limiter:$userId";
        $currentTime = time();

        // 开启事务
        $this->redis->multi();
        
        // 移除时间窗口外的请求记录
        $this->redis->zRemRangeByScore($key, 0, $currentTime - $this->timeWindow);
        
        // 获取当前时间窗口内的请求数量
        $this->redis->zCard($key);
        
        // 添加当前请求的时间戳
        $this->redi.........完整代码请登录后点击上方下载按钮下载查看

网友评论0