文章目录
ABP vNext中使用Redis缓存
1.安装依赖包
abp add-package Volo.Abp.Caching.StackExchangeRedis
2.配置
2.1 appsettings.json
"Redis": {
"IsEnabled": "true",
"Configuration": "127.0.0.1"
}
2.2 ***HttpApiHostModule
依赖模块
[DependsOn(
typeof(AbpCachingStackExchangeRedisModule)
)]
ConfigureServices方法:
public override void ConfigureServices(ServiceConfigurationContext context)
{
var configuration = context.Services.GetConfiguration();
var hostingEnvironment = context.Services.GetHostingEnvironment();
ConfigureCache(configuration);
}
private void ConfigureCache(IConfiguration configuration)
{
Configure<AbpDistributedCacheOptions>(options =>
{
options.KeyPrefix = "CloudMom:";
//滑动过期
options.GlobalCacheEntryOptions = new DistributedCacheEntryOptions()
{
SlidingExpiration = TimeSpan.FromHours(2)
};
});
}
3 控制器中使用
3.1 构造函数注入
private readonly IDistributedCache<PlanDetailRes> _cache;
public PlanService(IDistributedCache<PlanDetailRes> cache)
{
_cache = cache;
}
3.2 方法中使用
var cacheKey = productionPlan.Id+ productionPlan.BomVersion;
var planDetailRes = await _cache.GetOrAddAsync
(
cacheKey,
async () =>
{
PlanDetailRes planDetailRes = new();
//根据批次带出所有计划信息
var productionPlans = await _planRepository.GetListAsync(s => s.Batch == productionPlan.Batch);
planDetailRes.PlanBatch = productionPlan.Batch;
planDetailRes.PlanCodes = productionPlans.Select(s => new PlanCodeDto()
{
Id = s.Id,
PlanCode = s.PlanCode
}).ToList();
planDetailRes.Plan = ObjectMapper.Map<Plan, PlanDto>(productionPlan);
return planDetailRes;
},
token: default
);
return planDetailRes;