# ratelimit-starter **Repository Path**: DongDequan/ratelimit-starter ## Basic Information - **Project Name**: ratelimit-starter - **Description**: 限流组件 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-21 - **Last Updated**: 2025-07-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 限流组件 限流的实现原理如下(基于zset+滑动窗口) serious原理: 首先根据当前传进来的key进行判断是否存在 不存在则直接创建这个zset,并在当前时间戳设置value,且过期时间为1天,返回true 若存在则需要判断是否存在着比当前时间戳更大的分数,若存在则直接返回false(代表被禁用) 不存在则需要将当前[时间戳-5min,时间戳]内的元素数量进行判断是否大于3 若大于3则在(当前时间戳+5min)的地方创建一个value为(-1*score),返回false 否则还需要判断[当天最早的时间戳,当前时间戳]的总次数是否大于一天中能访问的最大值 若大于访问的最大值,则直接在score为当天时间戳的最大值处设置(-1*score),返回false 若小于3则在当前时间戳的地方值设置为value,返回true slight和serious不同的是,slight无需去额外设置一个(-1*score) seriousPass和slightPass方法区别如下: ![img.png](img.png)