php使用redis实现的滑动时间窗口的限流算法

本文介绍了如何在PHP中结合Redis实现滑动时间窗口限流算法,通过提供Swoole的压测脚本示例来阐述具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎光临小弟的博客maliweb.top

/**
 * 滑动窗口限流
 * Class SlidingWindow
 * @package App\Common
 */
class SlidingWindow
{
	protected $timeStamp;                       //当前的时间戳

	protected $_is_open_minimum_check = false;  //是否开启最小精度检查 默认不开启

	protected $_minimum_time_range_size = 1;    // 最小限制范围精度单位秒钟
	protected $_minimum_time_range_qps  = 50;   // 最小范围精度对应的时间内允许的请求数量

	protected $_maximum_time_range_size = 60;   // 最大限制范围单位秒钟
	protected $_maximum_time_range_qps = 3000;  // 最大限制范围对应的时间内允许的请求数量

	protected $key = 'sliding_window';

	/** @var $redis \Redis */
	public $redis;

	public function __construct($redis)
	{
		$this->timeStamp = time();
		$this->redis = $redis;
	}

	//设置是否开启最小精度的检查 false为关闭 true为开启
	public function setOpenMininumCheck($open)
	{
		$this->_is_open_minimum_check = $open;
		return $this;
	}

	//设置最小精度时间 单位秒
	public function setMininumTime($time)
	{
		$this->_minimu
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值