From 84fd7113a8283a503dcb634cb247d4b5fc096de5 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 4 Nov 2019 18:35:37 +0100 Subject: [PATCH] Fix cache in REDIS x lettura BUNK (FIRST) --- AppData/ComLib.cs | 66 ++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 59 insertions(+), 7 deletions(-) diff --git a/AppData/ComLib.cs b/AppData/ComLib.cs index fd369bd..957ba45 100644 --- a/AppData/ComLib.cs +++ b/AppData/ComLib.cs @@ -30,6 +30,11 @@ namespace AppData protected static string redNestAnsw = "NKC:NEST:BANSW"; + protected static string redProdReq = "NKC:SERV:BUNKS"; + protected static string redProdAnsw = "NKC:PROD:BUNKS"; + + + #endregion #region definizione classi impiegate con PROD @@ -782,6 +787,44 @@ namespace AppData { return null; } + /// + /// Chiave primo bunk su redis + /// + protected static string redFirstBunkKey = $"{redProdReq}:FirstBunk"; + private static WBunk redisFirstBunk + { + get + { + WBunk answ = null; + string rawData = memLayer.ML.getRSV(redFirstBunkKey); + if (rawData != "") + { + // provo a deserializzare + try + { + answ = JsonConvert.DeserializeObject(rawData); + } + catch + { } + } + return answ; + } + set + { + if (value != null) + { + string redVal = JsonConvert.SerializeObject(value); + // default lascio x 5 minuti... + memLayer.ML.setRSV(redFirstBunkKey, redVal, 300); + } + else + // se null elimino da redis + { + memLayer.ML.setRSV(redFirstBunkKey, ""); + } + } + } + /// /// Restituisce il PRIMO bunk secondo criterio: /// - posizione = 5 (ho letto da webApp il BUNK e preso in carico) @@ -791,17 +834,26 @@ namespace AppData /// public static WBunk prodGetFirstBunk() { - WBunk answ = null; - // vado sul DB e leggo ... - DS_App.StackListDataTable tabBunks = DataLayer.man.taSTL.getLoaded(); - // controllo di averne almeno 1... - if (tabBunks.Count > 0) + // cerco prima su REDIS... + WBunk answ = redisFirstBunk; + if (answ == null) { - DS_App.StackListRow currBunk = tabBunks[0]; - answ = getBunkFromDb(currBunk); + // vado sul DB e leggo ... + DS_App.StackListDataTable tabBunks = DataLayer.man.taSTL.getLoaded(); + // controllo di averne almeno 1... + if (tabBunks.Count > 0) + { + DS_App.StackListRow currBunk = tabBunks[0]; + answ = getBunkFromDb(currBunk); + // se ho qualcosa salvo su REDIS + redisFirstBunk = answ; + } } return answ; } + + + /// /// Restituisce il PROSSIMO bunk secondo criterio: /// - posizione = 5 (ho letto da webApp il BUNK e preso in carico)