From 92703f6bbdc2a61c0d11401fa9f6a4eb2fb4273f Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 28 May 2026 11:22:59 +0200 Subject: [PATCH] Update caching --- MP.SPEC/Data/MpDataService.cs | 66 ++++++++--------------------------- 1 file changed, 14 insertions(+), 52 deletions(-) diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 0bd00253..4e2a0c2a 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -1253,33 +1253,14 @@ namespace MP.SPEC.Data /// public async Task> IstKitFiltAsync(string keyKit, string keyExtOrd) { - using var activity = ActivitySource.StartActivity("IstKitFiltAsync"); - string source = "DB"; - List? result = new List(); - // cerco in redis... string currKey = $"{Utils.redisKitInst}:{keyKit}:{keyExtOrd}"; - RedisValue rawData = await redisDb.StringGetAsync(currKey); - if (rawData.HasValue) - { - result = JsonConvert.DeserializeObject>($"{rawData}"); - source = "REDIS"; - } - else - { - result = await dbController.IstKitFiltAsync(keyKit, keyExtOrd); - // serializzo e salvo... - rawData = JsonConvert.SerializeObject(result); - await redisDb.StringSetAsync(currKey, rawData, TimeSpan.FromMinutes(redisLongTimeCache)); - } - if (result == null) - { - result = new List(); - } - activity?.SetTag("data.source", source); - activity?.SetTag("result.count", result.Count); - activity?.Stop(); - LogTrace($"IstKitFiltAsync | {source} | {activity?.Duration.TotalMilliseconds}ms"); - return result; + return await GetOrFetchAsync( + operationName: "IstKitFiltAsync", + cacheKey: currKey, + expiration: TimeSpan.FromMinutes(redisLongTimeCache), + fetchFunc: async () => await dbController.IstKitFiltAsync(keyKit, keyExtOrd) ?? new List(), + tagList: [Utils.redisKitInst] + ); } /// @@ -2116,33 +2097,14 @@ namespace MP.SPEC.Data /// public async Task> POdlListGetFiltAsync(bool lanciato, string keyRichPart, string idxMacchina, string codGruppo, DateTime startDate, DateTime endDate) { - using var activity = ActivitySource.StartActivity("POdlListGetFiltAsync"); - List? result = new List(); - string source = "DB"; string currKey = $"{Utils.redisPOdlList}:{codGruppo}:{idxMacchina}:{keyRichPart}:{lanciato}:{startDate:yyyyMMdd_HHmmss}:{endDate:yyyyMMdd_HHmmss}"; - // cerco in redis dato valore sel idxMaccSel... - RedisValue rawData = redisDb.StringGet(currKey); - if (rawData.HasValue) - { - result = JsonConvert.DeserializeObject>($"{rawData}"); - source = "REDIS"; - } - else - { - result = await dbController.ListPODLFiltAsync(lanciato, keyRichPart, idxMacchina, codGruppo, startDate, endDate); - // serializzo e salvo... - rawData = JsonConvert.SerializeObject(result); - redisDb.StringSet(currKey, rawData, TimeSpan.FromSeconds(redisShortTimeCache)); - } - if (result == null) - { - result = new List(); - } - activity?.SetTag("data.source", source); - activity?.SetTag("result.count", result.Count); - activity?.Stop(); - LogTrace($"POdlListGetFiltAsync | Read from {source}: {activity?.Duration.TotalMilliseconds}ms"); - return result; + return await GetOrFetchAsync( + operationName: "POdlListGetFiltAsync", + cacheKey: currKey, + expiration: TimeSpan.FromSeconds(redisShortTimeCache), + fetchFunc: async () => await dbController.ListPODLFiltAsync(lanciato, keyRichPart, idxMacchina, codGruppo, startDate, endDate) ?? new List(), + tagList: [Utils.redisPOdlList] + ); } ///