下面是一个标准的
IDistributedCache
用例:
在这个用例中每次都要做很多事情,包括序列化/反序列化。如果缓存不存在/未命中,可能会有多个并发线程获取基础数据并序列化数据,并将所有数据推送到缓存中间件中,我们看到这里 分布式缓存使用上就没有
IMemoryCache
那么性能高效, 为此.NET团队在NET9中 添加了
HybridCache
解决这个痛点,
原理还是简单,使用本地的
IMemoryCache
给
IDistributedCache
包装一层提供一个二级缓存包装的概念.
下面简单引用并注册一下服务:
minimal api中的简单用例:
HybridCache
通过本地的二级缓存避免了频繁的与分布式缓存服务器的交互以及成本高昂的类型转换(如果数据结构复杂庞大更甚)性能瞬间又提升了.
另外
HybridCache
是一个抽象类,微软默认的实现是二级到内存缓存,如果你有兴趣甚至可以无限封装扩展到其他的缓存中 比如你自己的
YourHybridCache
最后
Microsoft.Extensions.Caching.Hybrid
兼容
.NET Framework 4.7.2
and
.NET Standard 2.0
这个也可以点个赞,对老系统升级比较友好!
更多信息:
https://learn.microsoft.com/en-us/aspnet/core/performance/caching/hybrid?view=aspnetcore-9.0
用例代码:
https://GitHub.com/vipwan/Biwen.QuickApi/blob/net9/Biwen.QuickApi.DemoWeb/~DemoModular.cs