PlumX.Core.Caching.RateLimiting 1.0.0-preview.7

This is a prerelease version of PlumX.Core.Caching.RateLimiting.
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
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PlumX.Core.Caching.RateLimiting" Version="1.0.0-preview.7" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PlumX.Core.Caching.RateLimiting" Version="1.0.0-preview.7" />
                    
Directory.Packages.props
<PackageReference Include="PlumX.Core.Caching.RateLimiting" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PlumX.Core.Caching.RateLimiting --version 1.0.0-preview.7
                    
#r "nuget: PlumX.Core.Caching.RateLimiting, 1.0.0-preview.7"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PlumX.Core.Caching.RateLimiting@1.0.0-preview.7
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PlumX.Core.Caching.RateLimiting&version=1.0.0-preview.7&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=PlumX.Core.Caching.RateLimiting&version=1.0.0-preview.7&prerelease
                    
Install as a Cake Tool

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"
    }
  }
}

PermitLimitWindowSeconds 必须大于零;FailureMode 支持 FailOpenFailClosed。计数键由应用名、策略名和分区键组成,Redis Lua 脚本负责原子递增及过期时间。

配置中心中的 RateLimiting:Redis 节会覆盖本地同名配置。字段默认值为:ApplicationName="PlumX.Core"PolicyName="api"RedisName="DefaultRedis"PermitLimit=100WindowSeconds=60FailureMode=FailClosedRedisName 必须与 PlumX.Core.Caching 注册的命名 Redis 一致;本项目不读取 Platform 本地限流使用的 RateLimiting:PermitLimitRateLimiting:WindowSecondsRateLimiting:QueueLimit

主要 API

  • AddPlumRedisRateLimiting:绑定配置并注册 IRedisDistributedRateLimiter
  • IRedisDistributedRateLimiter:执行限流判断并返回剩余窗口信息。
  • RedisDistributedRateLimiterOptions:限流窗口、Redis 名称和失败模式。

边界与运维说明

分区键必须稳定且经过规范化,避免同一主体产生多个限流键。Redis 故障时 FailOpen 放行,FailClosed 拒绝;取消令牌不会被失败模式吞掉。多实例部署应使用共享 Redis,单实例可直接使用 Platform 的本地限流。

完整使用示例

Redis 缓存依赖、分区键与 429 响应处理示例见 模块使用示例。完整可运行的缓存读写和分布式限流接口见 PlumX.Demo.Redis

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

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