.NET 缓存:内存缓存 IMemoryCache、分布式缓存 IDistributedCache(Redis).docx

.NET 缓存:内存缓存 IMemoryCache、分布式缓存 IDistributedCache(Redis).docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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)

152****4498 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档