PlumX.Core.Caching.RateLimiting
1.0.0-preview.7
dotnet add package PlumX.Core.Caching.RateLimiting --version 1.0.0-preview.7
NuGet\Install-Package PlumX.Core.Caching.RateLimiting -Version 1.0.0-preview.7
<PackageReference Include="PlumX.Core.Caching.RateLimiting" Version="1.0.0-preview.7" />
<PackageVersion Include="PlumX.Core.Caching.RateLimiting" Version="1.0.0-preview.7" />
<PackageReference Include="PlumX.Core.Caching.RateLimiting" />
paket add PlumX.Core.Caching.RateLimiting --version 1.0.0-preview.7
#r "nuget: PlumX.Core.Caching.RateLimiting, 1.0.0-preview.7"
#:package PlumX.Core.Caching.RateLimiting@1.0.0-preview.7
#addin nuget:?package=PlumX.Core.Caching.RateLimiting&version=1.0.0-preview.7&prerelease
#tool nuget:?package=PlumX.Core.Caching.RateLimiting&version=1.0.0-preview.7&prerelease
PlumX.Core.Caching.RateLimiting
NuGet 包 ID:
PlumX.Core.Caching.RateLimiting
定位
PlumX.Core.Caching.RateLimiting 提供基于 Redis 原子计数的多实例固定窗口限流。它是 Redis 能力插件,不再使用旧的 PlumX.Core.RateLimites 项目;Platform 本地限流和本项目可按部署规模分别选择。
目标框架与依赖
- 目标框架:
net8.0 - 项目引用:
PlumX.Core.Caching - 主要依赖:Microsoft.Extensions.Configuration.Binder
接入方式
必须先调用 AddCaching,再注册限流:
builder.AddCaching();
services.AddPlumRedisRateLimiting(configuration);
注册时按 RedisName 查找已注册的 IRedisAtomicStore;名称不存在会抛出明确的启动异常。
配置
{
"RateLimiting": {
"Redis": {
"ApplicationName": "orders",
"PolicyName": "api",
"RedisName": "DefaultRedis",
"PermitLimit": 100,
"WindowSeconds": 60,
"FailureMode": "FailClosed"
}
}
}
PermitLimit、WindowSeconds 必须大于零;FailureMode 支持 FailOpen 和 FailClosed。计数键由应用名、策略名和分区键组成,Redis Lua 脚本负责原子递增及过期时间。
配置中心中的 RateLimiting:Redis 节会覆盖本地同名配置。字段默认值为:ApplicationName="PlumX.Core"、PolicyName="api"、RedisName="DefaultRedis"、PermitLimit=100、WindowSeconds=60、FailureMode=FailClosed。RedisName 必须与 PlumX.Core.Caching 注册的命名 Redis 一致;本项目不读取 Platform 本地限流使用的 RateLimiting:PermitLimit、RateLimiting:WindowSeconds 和 RateLimiting:QueueLimit。
主要 API
AddPlumRedisRateLimiting:绑定配置并注册IRedisDistributedRateLimiter。IRedisDistributedRateLimiter:执行限流判断并返回剩余窗口信息。RedisDistributedRateLimiterOptions:限流窗口、Redis 名称和失败模式。
边界与运维说明
分区键必须稳定且经过规范化,避免同一主体产生多个限流键。Redis 故障时 FailOpen 放行,FailClosed 拒绝;取消令牌不会被失败模式吞掉。多实例部署应使用共享 Redis,单实例可直接使用 Platform 的本地限流。
完整使用示例
Redis 缓存依赖、分区键与 429 响应处理示例见 模块使用示例。完整可运行的缓存读写和分布式限流接口见 PlumX.Demo.Redis。
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.Extensions.Configuration.Binder (>= 8.0.2)
- PlumX.Core.Caching (>= 1.0.0-preview.7)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.0-preview.7 | 54 | 9/2/2026 |
| 1.0.0-preview.6 | 54 | 9/1/2026 |
| 1.0.0-preview.5 | 57 | 8/31/2026 |
| 1.0.0-preview.4 | 65 | 8/19/2026 |
| 1.0.0-preview.3 | 57 | 8/18/2026 |