diff --git a/GPW.CORE.Smart8/Data/CoreSmartDataService.cs b/GPW.CORE.Smart8/Data/CoreSmartDataService.cs
index 532dd50..43357ac 100644
--- a/GPW.CORE.Smart8/Data/CoreSmartDataService.cs
+++ b/GPW.CORE.Smart8/Data/CoreSmartDataService.cs
@@ -1640,13 +1640,45 @@ namespace GPW.CORE.Smart8.Data
#region Private Methods
///
- /// Esegue flush memoria redis dato pattern
+ /// Esegue flush memoria redis dato pat2Flush
///
- ///
+ ///
///
- private async Task ExecFlushRedisPattern(RedisValue pattern)
+ private async Task ExecFlushRedisPattern(RedisValue pat2Flush)
{
bool answ = false;
+ var masterEndpoint = redisConn.GetEndPoints()
+ .Where(ep => redisConn.GetServer(ep).IsConnected && !redisConn.GetServer(ep).IsReplica)
+ .FirstOrDefault();
+
+ // se pat2Flush รจ "*" elimino intero DB...
+ if (masterEndpoint != null && (pat2Flush.Equals(new RedisValue("*")) || pat2Flush == RedisValue.Null))
+ {
+ redisConn.GetServer(masterEndpoint).FlushDatabase(database: redisDb.Database);
+ }
+ else
+ {
+ var server = redisConn.GetServer(masterEndpoint);
+ var keys = server.Keys(database: redisDb.Database, pattern: pat2Flush, pageSize: 1000);
+
+ var deleteTasks = new List();
+ foreach (var key in keys)
+ {
+ deleteTasks.Add(redisDb.KeyDeleteAsync(key));
+ if (deleteTasks.Count >= 1000)
+ {
+ await Task.WhenAll(deleteTasks);
+ deleteTasks.Clear();
+ }
+ }
+ if (deleteTasks.Count > 0)
+ {
+ await Task.WhenAll(deleteTasks);
+ }
+ }
+ answ = true;
+
+#if false
var listEndpoints = redisConn.GetEndPoints();
foreach (var endPoint in listEndpoints)
{
@@ -1661,7 +1693,8 @@ namespace GPW.CORE.Smart8.Data
}
answ = true;
}
- }
+ }
+#endif
return answ;
}