Skip to content

jamesgober/dotnet-cache-kit

Repository files navigation

dotnet-cache-kit

NuGet Downloads License CI


In-memory and distributed caching abstraction for .NET. Unified API across memory and Redis backends, with stampede protection, TTL policies, cache-aside pattern, and stale-while-revalidate support — designed for high-throughput services where cache misses are expensive.

Features

  • Unified API — Same interface for in-memory and distributed backends; swap providers without code changes
  • Stampede Protection — Lock-based cache population prevents thundering herd on cold keys
  • Stale-While-Revalidate — Serve stale data while refreshing in the background; never block on cache miss
  • TTL Policies — Absolute and sliding expiration with per-key and per-category defaults
  • Cache-Aside — Built-in GetOrSetAsync with factory delegate for clean cache-aside patterns
  • Serialization — Pluggable serialization (System.Text.Json default, MessagePack optional)
  • Tagging — Tag cache entries for bulk invalidation (e.g., invalidate all entries tagged "user:123")
  • Metrics — Hit/miss counters, eviction tracking, and cache size reporting
  • Single Registrationservices.AddCacheKit()

Installation

dotnet add package JG.CacheKit

Quick Start

builder.Services.AddCacheKit(options =>
{
    options.UseMemory();                    // In-memory for dev
    // options.UseDistributed();           // Use with any registered IDistributedCache
    options.DefaultTtl = TimeSpan.FromMinutes(5);
    options.EnableStampedeProtection = true;
});

// Usage
public class ProductService(ICacheKit cache)
{
    public async Task<Product> GetProductAsync(string id) =>
        await cache.GetOrSetAsync(
            $"product:{id}",
            async ct => await LoadProductAsync(id, ct),
            new CacheEntryOptions { Ttl = TimeSpan.FromMinutes(10) });
}

Documentation

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

Licensed under the Apache License 2.0. See LICENSE for details.


Ready to get started? Install via NuGet and check out the API reference.

About

Caching library for .NET 8. Unified API for in-memory and Redis backends. Stampede protection, stale-while-revalidate, tag-based invalidation, and TTL policies.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages