CoreSystem.Idempotency.Redis
2.1.0
dotnet add package CoreSystem.Idempotency.Redis --version 2.1.0
NuGet\Install-Package CoreSystem.Idempotency.Redis -Version 2.1.0
<PackageReference Include="CoreSystem.Idempotency.Redis" Version="2.1.0" />
<PackageVersion Include="CoreSystem.Idempotency.Redis" Version="2.1.0" />
<PackageReference Include="CoreSystem.Idempotency.Redis" />
paket add CoreSystem.Idempotency.Redis --version 2.1.0
#r "nuget: CoreSystem.Idempotency.Redis, 2.1.0"
#:package CoreSystem.Idempotency.Redis@2.1.0
#addin nuget:?package=CoreSystem.Idempotency.Redis&version=2.1.0
#tool nuget:?package=CoreSystem.Idempotency.Redis&version=2.1.0
⚡ CoreSystem.Idempotency.Redis
Redis storage provider for CoreSystem.Idempotency, built on the
IIdempotencyStorageabstraction.
It is the recommended provider for production workloads that require low latency, horizontal scalability, and automatic expiration of idempotency entries.
The package targets .NET 8, .NET 9 and .NET 10, and ships an assembly for each of those frameworks.
✨ Features
- ✅ Distributed idempotency
- ✅ High-performance Redis storage
- ✅ Automatic expiration
- ✅ Horizontal scalability
- ✅ Seamless integration with CoreSystem.Idempotency
- ✅ OpenTelemetry compatible
- ✅ Production-ready
📦 Installation
Install the framework.
dotnet add package CoreSystem.Idempotency
Install the Redis provider.
dotnet add package CoreSystem.Idempotency.Redis
🚀 Quick Start
Configure the Redis connection and register the provider.
builder.Services
.AddCoreIdempotency(options =>
{
builder.Configuration
.GetSection("Core:Idempotency")
.Bind(options);
})
.AddCoreIdempotencyRedis(options =>
{
options.Configuration = redis =>
{
redis.EndPoints.Add("localhost:6379");
};
});
The connection endpoint is supplied through the RedisOptions.Configuration delegate,
which receives a StackExchange.Redis.ConfigurationOptions instance.
To read the endpoint from configuration instead, assign it inside the same delegate.
{
"ConnectionStrings": {
"Redis": "localhost:6379"
}
}
builder.Services.AddCoreIdempotencyRedis(options =>
{
options.Configuration = redis =>
{
redis.EndPoints.Add(
builder.Configuration.GetConnectionString("Redis")!);
};
});
Note
RedisOptions.Configurationis anAction<ConfigurationOptions>, not a string. A plain connection string cannot be bound to it withBind.
Enable the middleware.
app.UseCoreIdempotency();
⚡ Why Redis?
Redis is ideal for:
- Distributed APIs
- Kubernetes deployments
- Microservices
- High request throughput
- Low-latency workloads
📊 Characteristics
| Feature | Supported |
|---|---|
| Distributed | ✅ |
| Automatic Expiration | ✅ |
| Low Latency | ✅ |
| Horizontal Scaling | ✅ |
| Durable Persistence | ⚪ (Depends on Redis configuration) |
📚 Documentation
Complete documentation includes:
- Installation
- Configuration
- Production recommendations
- Performance considerations
- Architecture
🤝 Contributing
Contributions, bug reports and feature requests are always welcome. Fork the repository, create a feature branch, and open a pull request.
📄 License
Released under the MIT License.
| 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 is compatible. 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 is compatible. 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. |
-
net10.0
- CoreSystem.Http (>= 1.2.0)
- CoreSystem.Idempotency (>= 2.1.0)
- CoreSystem.Observability.Abstractions (>= 1.1.0)
- CoreSystem.Redis (>= 1.1.0)
- CoreSystem.Serialization (>= 1.3.0)
- OpenTelemetry.Extensions.Hosting (>= 1.20.1)
- StackExchange.Redis (>= 2.13.17)
-
net8.0
- CoreSystem.Http (>= 1.2.0)
- CoreSystem.Idempotency (>= 2.1.0)
- CoreSystem.Observability.Abstractions (>= 1.1.0)
- CoreSystem.Redis (>= 1.1.0)
- CoreSystem.Serialization (>= 1.3.0)
- OpenTelemetry.Extensions.Hosting (>= 1.20.1)
- StackExchange.Redis (>= 2.13.17)
-
net9.0
- CoreSystem.Http (>= 1.2.0)
- CoreSystem.Idempotency (>= 2.1.0)
- CoreSystem.Observability.Abstractions (>= 1.1.0)
- CoreSystem.Redis (>= 1.1.0)
- CoreSystem.Serialization (>= 1.3.0)
- OpenTelemetry.Extensions.Hosting (>= 1.20.1)
- StackExchange.Redis (>= 2.13.17)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
2.1.0: Multi-targeting release. The package now ships net8.0, net9.0 and net10.0 assets instead of net8.0 only, so a project on .NET 9 or .NET 10 gets an assembly compiled for its own target framework.
Dependency refresh. No code or API changes.
CoreSystem.Redis 1.0.3 to 1.0.4, which raises its own StackExchange.Redis floor
to 2.13.17, so the central pin moves with it. Also the refreshed transitive graph
(Microsoft.Extensions.*, OpenTelemetry.Extensions.Hosting 1.20.0).