Pinguteca.Sdk.Core.Caching 0.4.0

dotnet add package Pinguteca.Sdk.Core.Caching --version 0.4.0
                    
NuGet\Install-Package Pinguteca.Sdk.Core.Caching -Version 0.4.0
                    
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="Pinguteca.Sdk.Core.Caching" Version="0.4.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Pinguteca.Sdk.Core.Caching" Version="0.4.0" />
                    
Directory.Packages.props
<PackageReference Include="Pinguteca.Sdk.Core.Caching" />
                    
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 Pinguteca.Sdk.Core.Caching --version 0.4.0
                    
#r "nuget: Pinguteca.Sdk.Core.Caching, 0.4.0"
                    
#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 Pinguteca.Sdk.Core.Caching@0.4.0
                    
#: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=Pinguteca.Sdk.Core.Caching&version=0.4.0
                    
Install as a Cake Addin
#tool nuget:?package=Pinguteca.Sdk.Core.Caching&version=0.4.0
                    
Install as a Cake Tool

Pinguteca.Sdk.Core.Caching

Response-caching gRPC client interceptor for Pinguteca SDK clients. Layer 3 companion to Pinguteca.Sdk.Core.

Cross-SDK contract pinned in RFC 0015: schema-driven per-method opt-in, content-hashed cache keys (SHA-256, FIPS 180-4 approved), default-deny tenant-scope isolation, TTL plus ETag plus write-triggered invalidation, opt-in stale-while-revalidate and negative caching, default-on single-flight, and streaming pass-through.

Ships as L3 because realistic cache stores (Redis, etc.) are third-party dependencies the core SDK does not require.

Install

dotnet add package Pinguteca.Sdk.Core.Caching

What ships

  • CachingInterceptor wraps unary gRPC calls; streams pass through.
  • ICache interface with MemoryCache LRU+TTL+SWR default.
  • CacheSpec describing TTL, SWR, negative TTL, and write-method invalidation lists.
  • CachingOptions with KeyScope hook (required, default-deny), MethodConfig map, and optional ILogger sink for hit/miss outcomes.

Quickstart

using Grpc.Core.Interceptors;
using Grpc.Net.Client;
using Pinguteca.Sdk.Core.Caching;

var cache = new MemoryCache(1024);
var interceptor = new CachingInterceptor(new()
{
    Store = cache,
    KeyScope = ctx => "tenant-a",
    MethodConfig =
    {
        ["/user.v1.UserService/GetUser"]    = new CacheSpec { Ttl = TimeSpan.FromMinutes(1) },
        ["/user.v1.UserService/UpdateUser"] = new CacheSpec { Invalidates = ["GetUser"] },
    },
});

var channel = GrpcChannel.ForAddress("https://api.example.com");
var invoker = channel.Intercept(interceptor);
var client = new UserService.UserServiceClient(invoker);

Multi-tenant deployments wire KeyScope to extract a tenant identifier from ClientInterceptorContext.Options.Headers or application context. Single-tenant deployments wire KeyScope = _ => "" to opt into empty scope with explicit acknowledgement.

Docs

https://github.com/Pinguteca/sdk-core-dotnet

Product 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. 
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
0.4.0 88 6/7/2026