工程开发
upstash-ratelimit-ts avatar

upstash-ratelimit-ts

适用于 TypeScript 的无连接 HTTP 速率限制 SDK,专为无服务器 (Serverless)、边缘计算 (Edge) 环境及 Upstash Redis 设计。

简介

upstash-ratelimit-ts SDK 是一款专为现代分布式架构设计的强大无连接速率限制解决方案。通过使用 HTTP 取代传统 TCP 连接,此程式库针对无服务器平台(如 AWS Lambda、Vercel Functions、Cloudflare Workers 与 Fastly Compute@Edge)进行了最佳化。它使开发人员能够在 Node.js、Deno 与各种边缘计算环境中,轻松防止服务滥用、调整流量并管理 API 使用成本。

  • 支援多种速率限制演算法:固定窗口 (Fixed Window)、滑动窗口 (Sliding Window) 与令牌桶 (Token Bucket),实现对请求频率的精确控制。

  • 与 Upstash Redis 原生整合,在全球部署中实现低延迟的状态持续性。

  • 支援分析功能,可直接透过 Upstash 仪表板追踪被封锁与成功的请求。

  • 内建流量保护功能,包括基于 IP 的封锁、用户代理 (User-Agent) 过滤与基于国家的存取控制。

  • 具备极高的可携性,可在 WebAssembly、浏览器环境及无法维持持久 TCP 连接的无服务器计算模型中顺畅运作。

  • 若要开始使用,请透过传入 Redis 连接字串与选择的演算法来初始化 Ratelimit 实例,然后将其套用到特定路由或 API 处理常式中。

  • 请确保正确设定 UPSTASH_REDIS_REST_URL 与 UPSTASH_REDIS_REST_TOKEN 等环境变量,以建立无连接工作阶段。

  • 在 limit 方法中使用识别码参数(例如 IP 位址或用户 ID),以便针对每个用户进行细粒度的流量调节。

  • 利用 waitUntil 函数进行非同步的分析报告,以最大限度地减少无服务器环境中的请求延迟。

  • 请注意 Redis 的成本影响;若在多个应用程序或服务间共用单一 Redis 实例,建议使用前缀 (prefix) 来管理键值命名空间。

仓库统计

Star 数
2,036
Fork 数
47
Open Issue 数
5
主要语言
TypeScript
默认分支
main
同步状态
空闲
最近同步时间
2026年5月3日 02:24
在 GitHub 查看