- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第
.NET缓存:内存缓存IMemoryCache、分布式缓存IDistributedCache(Redis)
.NET缓存里分了几类,主要学习内存缓存、分布式缓存
一、内存缓存IMemoryCache
1、Program注入缓存
builder.Services.AddMemoryCache();
2、相关方法及参数
Get、TryGetValue、GetOrCreate、GetOrCreateAsync、Set、Remove,关键参数是过期时间,GetOrCreate、GetOrCreateAsync是通过委托类型的参数设置的,Set方法可以通过参数直接设置,或者使用MemoryCacheEntryOptions,类型有三种:
(1)AbsoluteExpiration绝对过期,到期删除
(2)AbsoluteExpirationRelativeToNow相对当前时间过期,到期删除
(3)SlidingExpiration滑动过期,时效内访问再延长,未访问到期删除
[Route(api/[controller]/[action])]
[ApiController]
publicclassMemoryCacheController:ControllerBase
privatereadonlyIMemoryCache_memoryCache;
privatereadonlystringcacheKey=cache;
publicMemoryCacheController(IMemoryCachememoryCache)
_memoryCache=memoryCache;
[HttpGet]
publicstringGet()
varvalue=_memoryCache.Get(cacheKey);
returnvalue==nullnull:value.ToString();
[HttpGet]
publicstringTryGetValue()
if(_memoryCache.TryGetValue(cacheKey,outstringvalue))
returnvalue;
returnnull;
[HttpGet]
publicstringGetOrCreate()
varvalue=_memoryCache.GetOrCreate(
cacheKey,
cacheEntry=
cacheEntry.AbsoluteExpirationRelativeToNow=TimeSpan.FromSeconds(3);
returnGetOrCreate:+DateTime.Now.ToString(T);
returnvalue;
[HttpGet]
publicasyncTaskstringGetOrCreateAsync()
varvalue=awAIt_memoryCache.GetOrCreateAsync(
cacheKey,
cacheEntry=
cacheEntry.SlidingExpiration=TimeSpan.FromSeconds(3);
returnTask.FromResult(GetOrCreateAsync:+DateTime.Now.ToString(T));
returnvalue;
[HttpPost]
publicvoidSet()
stringvalue=Set:+DateTime.Now.ToString(T);
MemoryCacheEntryOptionsop=newMemoryCacheEntryOptions();
//绝对到期,到期删除
op.AbsoluteExpiration=DateTimeOffset.Parse(2025-12-3123:59:59);
//_memoryCache.Set(cacheKey,value,DateTimeOffset.Parse(2025-12-3123:59:59));
//相对当前时间过期,到期删除
op.AbsoluteExpirationRelativeToNow=TimeSpan.FromSeconds(10);
//_memoryCache.Set(cacheK
文档评论(0)