# ziggycreatures/fusioncache

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/ziggycreatures-fusioncache).**

3,543 stars · 177 forks · C# · mit

## Links

- GitHub: https://github.com/ZiggyCreatures/FusionCache
- awesome-repositories: https://awesome-repositories.com/repository/ziggycreatures-fusioncache.md

## Topics

`async` `cache` `cache-stampede` `caching` `csharp` `dotnet` `hybrid` `hybrid-cache` `multi-level` `performance` `stampede`

## Description

FusionCache is a .NET caching framework that manages local and distributed data storage. It functions as a hybrid cache implementation, combining fast in-memory storage with a distributed second-level cache to reduce latency and remote data fetches.

The framework includes a cache stampede protector that ensures only one request fetches missing data while concurrent calls wait. It synchronizes data across multiple application nodes using a backplane and provides an observability-driven approach with built-in metrics, structured logging, and telemetry.

The system covers a broad range of caching strategies, including adaptive expiration, tag-based group invalidation, and eager background refreshing. It provides high availability features such as circuit breakers for distributed resource protection, fail-safe fallbacks for unavailable data sources, and object cloning to prevent internal store mutation.

Performance and system health are monitored via OpenTelemetry integration.

## Tags

### Data & Databases

- [Multi-level Caching](https://awesome-repositories.com/f/data-databases/multi-level-caching.md) — Combines a fast local memory store with a distributed second-level cache to minimize latency and remote fetches.
- [Stampede Mitigation](https://awesome-repositories.com/f/data-databases/concurrent-write-optimizations/concurrent-caches/stampede-mitigation.md) — Ensures only one request fetches missing data while concurrent calls wait to prevent backend overload.
- [Backplane Synchronization](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/caching-performance/caching/distributed-caches/parallelism-aware-cache-synchronization/backplane-synchronization.md) — Uses a messaging backplane to notify multiple distributed nodes of cache changes to maintain data consistency.
- [Distributed Caching](https://awesome-repositories.com/f/data-databases/distributed-caching.md) — Keeps data consistent across multiple application nodes by syncing cache changes and managing distributed backplanes.
- [Distributed Cache Synchronizers](https://awesome-repositories.com/f/data-databases/distributed-state-synchronizers/distributed-cache-synchronizers.md) — Uses a backplane to notify multiple application nodes of cache changes for data consistency.
- [Distributed Memory Caches](https://awesome-repositories.com/f/data-databases/in-memory-caches/distributed-memory-caches.md) — Combines fast local memory storage with a distributed second-level cache to reduce latency and remote data fetches.
- [Adaptive Caching Strategies](https://awesome-repositories.com/f/data-databases/data-caching/adaptive-caching-strategies.md) — Dynamically adjusts expiration rules and handles null values based on the specific data retrieved from the source.
- [Adaptive Expiration](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/caching-performance/caching-strategies/adaptive-expiration.md) — Provides the capability to dynamically adjust cache expiration settings based on the specific values retrieved from the data source. ([source](https://cdn.jsdelivr.net/gh/ziggycreatures/fusioncache@main/README.md))
- [Fallback Caching Mechanisms](https://awesome-repositories.com/f/data-databases/data-engineering-infrastructure/caching-performance/caching-strategies/fallback-caching-mechanisms.md) — Provides fail-safe fallbacks that serve expired cache entries when the underlying data source is unavailable. ([source](https://github.com/ZiggyCreatures/FusionCache/tree/main/docs/))
- [High Availability Cache Layers](https://awesome-repositories.com/f/data-databases/database-caching-middleware/high-availability-cache-layers.md) — Prevents system crashes and cache stampedes using fail-safe fallbacks, circuit breakers, and request locking.
- [Adaptive Expiration](https://awesome-repositories.com/f/data-databases/metadata-caching/cache-expiration-management/adaptive-expiration.md) — Implements logic to determine cache lifetimes dynamically based on the actual value retrieved from the data source.

### Development Tools & Productivity

- [Cache Invalidation](https://awesome-repositories.com/f/development-tools-productivity/build-artifact-caching/cache-invalidation.md) — Manages complex data dependencies by grouping related entries with tags for simultaneous expiration and removal.
- [Entity-Based Cache Tags](https://awesome-repositories.com/f/development-tools-productivity/build-artifact-caching/cache-invalidation/hierarchical-cache-invalidators/entity-based-cache-tags.md) — Associates multiple cache entries with shared labels to expire related sets of data with a single command.

### DevOps & Infrastructure

- [Tiered Caching](https://awesome-repositories.com/f/devops-infrastructure/caching-layers/tiered-caching.md) — Implements a tiered caching system combining fast in-memory storage with a distributed second-level cache.

### Programming Languages & Runtimes

- [.NET Caching Frameworks](https://awesome-repositories.com/f/programming-languages-runtimes/net-caching-frameworks.md) — Provides a high-performance caching library for .NET applications that manages local and distributed data storage.

### Software Engineering & Architecture

- [Request Collapsing](https://awesome-repositories.com/f/software-engineering-architecture/concurrency-synchronization-primitives/fiber-synchronization/promise-based/request-collapsing.md) — Blocks concurrent requests for the same missing key so only one operation fetches data from the source.
- [Distributed Resource Circuit Breakers](https://awesome-repositories.com/f/software-engineering-architecture/distributed-resource-circuit-breakers.md) — Implements circuit breakers to stop requests to failing distributed caches or backplanes, preventing system overload during outages. ([source](https://cdn.jsdelivr.net/gh/ziggycreatures/fusioncache@main/README.md))
- [Background Cache Refresh](https://awesome-repositories.com/f/software-engineering-architecture/service-discovery-registries/registry-client-caching/background-cache-refresh.md) — Provides non-blocking background updates of cache entries before they expire to eliminate requester latency.

### Networking & Communication

- [Circuit Breakers](https://awesome-repositories.com/f/networking-communication/traffic-management-gateways/circuit-breakers.md) — Implements circuit breakers to stop requests to failing distributed caches or backplanes, preventing system overload.

### System Administration & Monitoring

- [Cache Performance Metrics](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/metric-performance-monitors/cache-performance-metrics.md) — Tracks system health and performance through integrated metrics, structured logs, and telemetry for caching pipelines.
- [Observability-Driven Caches](https://awesome-repositories.com/f/system-administration-monitoring/monitoring-and-observability/observability-platforms/metric-performance-monitors/cache-performance-metrics/observability-driven-caches.md) — Provides a storage system with built-in metrics, structured logging, and telemetry to monitor cache health and performance.
