Fix cache in REDIS x lettura BUNK (FIRST)

This commit is contained in:
Samuele E. Locatelli
2019-11-04 18:35:37 +01:00
parent 7aaf677b3c
commit 84fd7113a8
+59 -7
View File
@@ -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;
}
/// <summary>
/// Chiave primo bunk su redis
/// </summary>
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<WBunk>(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, "");
}
}
}
/// <summary>
/// Restituisce il PRIMO bunk secondo criterio:
/// - posizione = 5 (ho letto da webApp il BUNK e preso in carico)
@@ -791,17 +834,26 @@ namespace AppData
/// <returns></returns>
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;
}
/// <summary>
/// Restituisce il PROSSIMO bunk secondo criterio:
/// - posizione = 5 (ho letto da webApp il BUNK e preso in carico)