前言
缓存在程序中扮演着提升性能、降低资源消耗、改善用户体验等重要角色,是构建高效、可伸缩、稳定的系统不可或缺的重要组成部分。今天大姚给大家分享一款.NET开源(基于MIT license)、强大、易于使用的缓存框架:FusionCache。
框架介绍
FusionCache是一个用于构建高效缓存系统的.NET框架,旨在提供简单易用、高性能和可靠的缓存解决方案。支持内存缓存、分布式缓存、http 缓存、CDN、浏览器缓存、离线缓存等等。
框架主要功能
框架具有自动防护缓存奔溃、分布式第二级缓存、软/硬超时处理、安全失败机制、后端通知、依赖注入和构建器支持、OpenTelemetry支持、完全同步/异步支持、事件机制等等功能。
看看框架官方描述:
框架源代码
框架Pack服务器托管ages
创建一个控制台应用
我们创建一个FusionCacheExercise
控制台应用来作为本篇文章的示例项目。
安装FusionCache Nuget包
在Nuget包管理器中搜索:ZiggyCreatures.FusionCache
进行安装。
创建PersonInfo类
publicclassPersonInfo
{
publicstringUserName{get;set;}
publicintAge{get;set;}
publicstringNationality{get;set;}
publicstringCacheMsg{get;set;}
}
创建FusionCacheService
publicclassFusionCacheService
{
privatereadonlyIFusionCache_cache;
publicFusionCacheService(IFusionCachecache)
{
_cache=cache;
}
publicasyncTaskGetValueAsync(stringkey)
{
varcachedValue=await_cache.GetOrDefaultAsync(key).ConfigureAwait(false);
if(cachedValue!=null)
{
cachedValue.CacheMsg="缓存中的值";
returncachedValue;
}
else
{
//从数据库或其他数据源获取值
varvalue=GetValueFromDataSource(key);
//将值存入缓存,设置过期时间等
await_cache.SetAsync(key,value,TimeSpan.FromMinutes(10)).ConfigureAwait(false);
returnvalue;
}
}
privatePersonInfoGetValueFromDataSource(stringkey)
{
varpersonInfo=newPersonInfo
{
UserName="追逐时光者",
Age=18,
Nationality="中国",
CacheMsg="默认值"
};
returnpersonInfo;
}
}
Program中调用
internalclassPr服务器托管ogram
{
staticvoidMain(string[]args)
{
//创建服务集合
varservices=newServiceCollection();
//服务注册
services.AddScoped();
varentryOptions=newFusionCacheEntryOptions().SetDuration(TimeSpan.FromMinutes(10));
services.AddFusionCache()
.WithDefaultEntryOptions(entryOptions)
.WithPostSetup((sp,c)=>
{
c.DefaultEntryOptions.Duration=TimeSpan.FromMinutes(5);
});
usingvarserviceProvider=services.BuildServiceProvider();
varmyService=serviceProvider.GetRequiredService();
for(inti=0;i{
varvalue=myService.GetValueAsync("FusionCacheExerciseKey").Result;
Console.WriteLine($"{value.CacheMsg}{value.UserName},{value.Age},{value.Nationality}");
}
}
}
项目源码地址
更多项目实用功能和特性欢迎前往项目开源地址查看,别忘了给项目一个Star支持。
https://github.com/ZiggyCreatures/FusionCache
优秀项目和框架精选
该项目已收录到C#/.NET/.NET Core优秀项目和框架精选中,关注优秀项目和框架精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发工作效率和质量。坑已挖,欢迎大家踊跃提交PR推荐或自荐(让优秀的项目和框架不被埋没
)。
https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.md
DotNetGuide技术社区交流群
- DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
- 在DotNetGuide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
欢迎加入DotNetGuide技术社区微信交流群
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net