.NET Core如何从appsettings中获取并设置IMemoryCache缓存过期时间
第一步:在appsettings.json中添加缓存配置节点
新增缓存时长配置节点,示例如下:
{ "CacheSettings": { "CredentialSlidingExpirationMinutes": 30 } }
可根据业务需求调整数值,也可以自定义单位(比如秒、小时),后续代码对应转换即可。
第二步:封装配置映射实体类
新建CacheSettings.cs类,用于和配置节点绑定:
public class CacheSettings { /// <summary> /// 凭证缓存滑动过期时长,单位:分钟 /// </summary> public int CredentialSlidingExpirationMinutes { get; set; } }
类的属性名要和appsettings中的配置项名完全对应,才能正常绑定取值。
第三步:服务注册
根据你使用的.NET版本,在对应启动文件中添加注册逻辑:
.NET 6及以上版本(Program.cs)
// 绑定配置节点到实体类 builder.Services.Configure<CacheSettings>(builder.Configuration.GetSection("CacheSettings")); // 注册内存缓存服务 builder.Services.AddMemoryCache(); // 注册你自定义的缓存处理类,示例中接口为IMemoryCacheHelper,实现类为MemoryCacheHelper builder.Services.AddScoped<IMemoryCacheHelper, MemoryCacheHelper>();
.NET 5及更早版本(Startup.cs的ConfigureServices方法)
public void ConfigureServices(IServiceCollection services) { // 绑定配置节点到实体类 services.Configure<CacheSettings>(Configuration.GetSection("CacheSettings")); // 注册内存缓存服务 services.AddMemoryCache(); // 注册自定义缓存处理类 services.AddScoped<IMemoryCacheHelper, MemoryCacheHelper>(); // 原有其他服务注册逻辑保留即可 }
第四步:在自定义缓存类中注入配置使用
在你封装的缓存处理类的构造函数中注入配置,读取过期时长赋值给SetSlidingExpiration参数即可,示例如下:
public class MemoryCacheHelper : IMemoryCacheHelper { private readonly IMemoryCache _memoryCache; private readonly TimeSpan _credentialSlidingExpiration; public MemoryCacheHelper(IMemoryCache memoryCache, IOptions<CacheSettings> cacheOptions) { _memoryCache = memoryCache; // 转换为TimeSpan类型,若配置值非法可在此处设置默认值兜底 int expireMinutes = cacheOptions.Value.CredentialSlidingExpirationMinutes; _credentialSlidingExpiration = TimeSpan.FromMinutes(expireMinutes > 0 ? expireMinutes : 10); } // 你封装的凭证缓存读取方法示例 public async Task<Credential> GetCredentialAsync(int id) { string cacheKey = $"Credential_{id}"; return await _memoryCache.GetOrCreateAsync(cacheKey, async entry => { // 直接使用预读取的过期时长配置 entry.SetSlidingExpiration(_credentialSlidingExpiration); // 此处写数据库查询凭证的逻辑 return await GetCredentialFromDbAsync(id); }); } }
内容的提问来源于stack exchange,提问作者Praveen Chowdary
相关产品推荐
相关产品推荐

