VapeCache.Core
1.2.3
See the version list below for details.
dotnet add package VapeCache.Core --version 1.2.3
NuGet\Install-Package VapeCache.Core -Version 1.2.3
<PackageReference Include="VapeCache.Core" Version="1.2.3" />
<PackageVersion Include="VapeCache.Core" Version="1.2.3" />
<PackageReference Include="VapeCache.Core" />
paket add VapeCache.Core --version 1.2.3
#r "nuget: VapeCache.Core, 1.2.3"
#:package VapeCache.Core@1.2.3
#addin nuget:?package=VapeCache.Core&version=1.2.3
#tool nuget:?package=VapeCache.Core&version=1.2.3
<p align="center"> <img src="assets/vapecache-brand.png" alt="VapeCache logo" width="920" /> </p>
VapeCache
VapeCache is a Redis-first caching runtime for ASP.NET Core and .NET services. It is designed for predictable behavior under load, Redis trouble, and high-throughput API traffic.
- Redis transport tuned for cache workloads
- Circuit-breaker and in-memory fallback for outage tolerance
- Stampede controls for hot keys
- OpenTelemetry metrics + traces
- ASP.NET Core and Aspire integrations
OSS scope in this repository: production-ready runtime packages for core caching, invalidation, ASP.NET Core integration, and Aspire integration.
Maturity and Evidence
Current project status: Early Adoption.
- Production-capable features are present, but ecosystem adoption is still building.
- Benchmark claims follow strict disclosure rules in docs/BENCHMARK_CLAIMS_POLICY.md.
- Release and compatibility governance is documented in:
QuickStart
- Install packages
dotnet add package VapeCache.Runtime
dotnet add package VapeCache.Extensions.Aspire
If you need ASP.NET Core output-cache middleware integration:
dotnet add package VapeCache.Extensions.AspNetCore
If you want a DI composition facade for clean architecture wiring:
dotnet add package VapeCache.Extensions.DependencyInjection
- Run Redis
docker run --name vapecache-redis -p 6379:6379 -d redis:7
- Configure
appsettings.json
{
"RedisConnection": {
"Host": "localhost",
"Port": 6379,
"Database": 0
},
"CacheStampede": {
"Profile": "Balanced"
}
}
- Register VapeCache in
Program.cs
using VapeCache.Abstractions.Caching;
using VapeCache.Abstractions.Connections;
using VapeCache.Infrastructure.Caching;
using VapeCache.Infrastructure.Connections;
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddOptions<RedisConnectionOptions>()
.Bind(builder.Configuration.GetSection("RedisConnection"));
builder.Services.AddVapecacheRedisConnections();
builder.Services.AddVapecacheCaching();
builder.Services.AddOptions<CacheStampedeOptions>()
.UseCacheStampedeProfile(CacheStampedeProfile.Balanced)
.Bind(builder.Configuration.GetSection("CacheStampede"));
- Add one endpoint
var app = builder.Build();
app.MapGet("/products/{id:int}", async (int id, IVapeCache cache, CancellationToken ct) =>
{
var key = CacheKey<string>.From($"products:{id}");
var value = await cache.GetOrCreateAsync(
key,
_ => new ValueTask<string>($"product-{id}"),
new CacheEntryOptions(TimeSpan.FromMinutes(5)),
ct);
return Results.Ok(value);
});
app.Run();
- Go deeper: docs/QUICKSTART.md
Production Packages (OSS)
| Package | Purpose |
|---|---|
VapeCache.Runtime |
Core runtime, Redis transport, fallback behavior, telemetry |
VapeCache.Core |
Shared primitives package (transitive dependency, usually not installed directly) |
VapeCache.Abstractions |
Public contracts and option/value types |
VapeCache.Features.Invalidation |
Optional key/tag/zone invalidation policies |
VapeCache.Extensions.DependencyInjection |
One-call IServiceCollection wiring facade for runtime + config binding |
VapeCache.Extensions.AspNetCore |
ASP.NET Core output-cache integration |
VapeCache.Extensions.Aspire |
Aspire wiring, health checks, endpoint helpers |
Out Of OSS Scope
The following are not shipped from this OSS repository:
- enterprise licensing and control-plane features
- durable spill persistence package
- reconciliation package for post-outage write replay
Documentation
- docs/INDEX.md
- docs/QUICKSTART.md
- docs/CONFIGURATION.md
- docs/SETTINGS_REFERENCE.md
- docs/CACHE_INVALIDATION.md
- docs/ASPNETCORE_PIPELINE_CACHING.md
- docs/ASPIRE_INTEGRATION.md
- docs/STABILITY_POLICY.md
- docs/PRODUCTION_READINESS.md
- docs/RELEASE_RUNBOOK.md
Build And Test
dotnet build VapeCache.slnx -c Release
dotnet test VapeCache.Tests/VapeCache.Tests.csproj -c Release
License
- Community/non-commercial usage: LICENSE
- Commercial usage: enterprise license required
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | 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
- LanguageExt.Core (>= 4.4.9)
- Microsoft.Extensions.Logging.Abstractions (>= 10.0.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on VapeCache.Core:
| Package | Downloads |
|---|---|
|
VapeCache.Abstractions
Public contracts, interfaces, and configuration types for VapeCache. Use this package when you need the shared API surface without the Redis transport implementation. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.2.22 | 240 | 4/26/2026 |
| 1.2.21 | 190 | 4/26/2026 |
| 1.2.20 | 222 | 4/13/2026 |
| 1.2.19 | 196 | 4/12/2026 |
| 1.2.18 | 194 | 3/30/2026 |
| 1.2.17 | 169 | 3/27/2026 |
| 1.2.15 | 184 | 3/19/2026 |
| 1.2.14 | 175 | 3/18/2026 |
| 1.2.13 | 194 | 3/14/2026 |
| 1.2.12 | 183 | 3/14/2026 |
| 1.2.11 | 168 | 3/14/2026 |
| 1.2.10 | 166 | 3/13/2026 |
| 1.2.9 | 177 | 3/12/2026 |
| 1.2.8 | 171 | 3/12/2026 |
| 1.2.7 | 165 | 3/11/2026 |
| 1.2.6 | 161 | 3/11/2026 |
| 1.2.5 | 168 | 3/11/2026 |
| 1.2.4 | 171 | 3/10/2026 |
| 1.2.3 | 165 | 3/10/2026 |
| 1.2.2 | 154 | 3/10/2026 |
1.2.3 release: aligns manual NuGet publishing, refreshes release docs, and tightens Aspire telemetry resource naming.