FusionCache
是由 ZiggyCreatures
开发的一个易于使用、快速且强大的缓存库,具备高级的弹性特性和可选的分布式第二级缓存功能。它在处理各种类型的缓存方面有着丰富的经验,包括内存缓存、分布式缓存、HTTP 缓存、CDN、浏览器缓存以及离线缓存等。
开源地址:https://github.com/ZiggyCreatures/FusionCache
核心特性
内存缓存: 使用任何实现了标准 IMemoryCache 接口的内存缓存作为主要的后端存储。
分布式缓存: 可选的分布式第二级缓存,使用任何实现了标准 IDistributedCache 接口的实现,以提高弹性和性能,特别是在多节点场景或避免冷启动时的典型问题(初始空缓存)。
背板(Backplane):在多节点场景中,背板可以发送通知给其他节点,保持所有涉及的内存缓存完全同步,无需额外工作。
高级弹性特性:包括防止缓存踩踏(cache stampede)、故障安全(fail-safe)机制、细粒度的软/硬超时设置、后台工厂完成、可定制的广泛日志记录等。
以下是 FusionCache 的主要特性:
Cache Stampede :自动防护 Cache Stampede 问题
二级缓存:透明处理的可选第二级缓存。
故障安全机制:避免瞬时故障,通过重用过期条目作为临时回退。
软/硬超时:慢速工厂(或分布式缓存)不会拖慢应用程序,且不会浪费数据。
背板同步:在多节点环境中,可以通知其他节点缓存的变化,保持同步。
自动恢复:自动处理瞬时问题,包括重试和同步逻辑。
自适应缓存:当你事先不知道缓存持续时间,因为它取决于被缓存的值本身时使用。
条件刷新:类似于 HTTP 条件请求的缓存条件刷新。
急切刷新:在过期之前开始非阻塞的后台刷新。
依赖注入和构建器:支持依赖注入,提供流畅的接口,包括构建器支持。
命名缓存:轻松使用多个命名缓存,即使它们配置不同。
OpenTelemetry 支持:通过 OpenTelemetry 提供原生的可观测性支持。
日志记录:全面、结构化且可定制的日志记录。
事件通知:提供高层次和低层次(内存/分布式)的全面事件集。
插件扩展:通过插件扩展 FusionCache,增加额外的行为,如支持度量、统计等。
FusionCache 已经在生产环境中使用多年,每天处理数百万次请求。