public static RedisMemoryAnalysis AnalyzeDatabaseMemory(RedisConnectionInfo connectionInfo, int database) { using (MiniProfiler.Current.Step("Redis Memory Analysis for " + connectionInfo + " - DB:" + database.ToString())) { return(Current.LocalCache.GetSet <RedisMemoryAnalysis>(GetMemoryAnalysisKey(connectionInfo, database), (old, ctx) => GetDatabaseMemoryAnalysis(connectionInfo, database), 24 * 60 * 60, 24 * 60 * 60)); } }
private static RedisMemoryAnalysis GetDatabaseMemoryAnalysis(RedisConnectionInfo connectionInfo, int database) { var config = new ConfigurationOptions { SyncTimeout = 10 * 60 * 1000, AllowAdmin = true, ClientName = "Status-MemoryAnalyzer", Password = connectionInfo.Password, EndPoints = { { connectionInfo.Host, connectionInfo.Port } } }; using (var muxer = ConnectionMultiplexer.Connect(config)) { var ma = new RedisMemoryAnalysis(connectionInfo, database); if (ma.ErrorMessage.HasValue()) { return(ma); } // Prep the match dictionary foreach (var km in KeyMatchers[connectionInfo]) { ma.KeyStats[km] = new KeyStats(); } ma.Analyze(muxer); return(ma); } }
public static RedisInstance Get(RedisConnectionInfo info) { foreach (var i in RedisModule.Instances) { if (i.ConnectionInfo == info) { return(i); } } return(null); }
public RedisInstance GetInstance(RedisConnectionInfo info) { foreach (var i in Instances) { if (i.ConnectionInfo == info) { return(i); } } return(null); }
public RedisMemoryAnalysis(RedisConnectionInfo connectionInfo, int database) { CreationDate = DateTime.UtcNow; KeyStats = new ConcurrentDictionary <KeyMatcher, KeyStats>(); ConnectionInfo = connectionInfo; Database = database; if (!RedisAnalyzer.KeyMatchers.TryGetValue(connectionInfo, out var matchers)) { ErrorMessage = "Could not find regexes defined for " + connectionInfo; return; } KeyMatchers = matchers; foreach (var km in matchers) { KeyStats[km] = new KeyStats(); } }
public RedisMemoryAnalysis(RedisAnalyzer analyzer, RedisConnectionInfo connectionInfo, int database) { CreationDate = DateTime.UtcNow; KeyStats = new ConcurrentDictionary <KeyMatcher, KeyStats>(); ConnectionInfo = connectionInfo; Database = database; KeyMatchers = analyzer.KeyMatchers; if (KeyMatchers.Count == 0) { ErrorMessage = "Could not find regexes defined for " + connectionInfo; return; } foreach (var km in KeyMatchers) { KeyStats[km] = new KeyStats(); } }
private static RedisMemoryAnalysis GetDatabaseMemoryAnalysis(RedisConnectionInfo connectionInfo, int database) { using (var rc = new RedisConnection(connectionInfo.Host, connectionInfo.Port, syncTimeout: 10 * 60 * 1000, allowAdmin: true)) { var ma = new RedisMemoryAnalysis(connectionInfo, database); if (ma.ErrorMessage.HasValue()) { return(ma); } // Prep the match dictionary foreach (var km in KeyMatchers[connectionInfo]) { ma.KeyStats[km] = new KeyStats(); } rc.Name = "Status-MemoryAnalyzer"; rc.Wait(rc.Open()); ma.Analyze(rc); return(ma); } }
public RedisInstance(RedisConnectionInfo connectionInfo) : base(connectionInfo.Host + ":" + connectionInfo.Port.ToString()) { ConnectionInfo = connectionInfo; ShortHost = connectionInfo.Host.Split(StringSplits.Period)[0]; ReplicatesCrossRegion = Current.Settings.Redis.Replication?.CrossRegionNameRegex?.IsMatch(ConnectionInfo.Name) ?? true; }
public static void ClearDatabaseMemoryAnalysisCache(RedisConnectionInfo connectionInfo, int database) { Current.LocalCache.Remove(GetMemoryAnalysisKey(connectionInfo, database)); }
private static string GetMemoryAnalysisKey(RedisConnectionInfo connectionInfo, int database) { return($"redis-memory-analysis-{connectionInfo.Host}:{connectionInfo.Port.ToString()}:{database.ToString()}"); }
public static void AnalyzerInstanceMemory(RedisConnectionInfo connectionInfo) { //TODO: Get databases, suck in cache for each }
public RedisInstance(RedisConnectionInfo connectionInfo) : base(connectionInfo.Host + ":" + connectionInfo.Port.ToString()) { ConnectionInfo = connectionInfo; ShortHost = Host.Split(StringSplits.Period).First(); }
public RedisInstance(RedisConnectionInfo connectionInfo) : base(connectionInfo.Host + ":" + connectionInfo.Port) { ConnectionInfo = connectionInfo; }
public static RedisInstance GetInstance(RedisConnectionInfo info) { return AllInstances.FirstOrDefault(ri => ri.ConnectionInfo == info); }
public static RedisInstance GetInstance(RedisConnectionInfo info) { return(AllInstances.FirstOrDefault(ri => ri.ConnectionInfo == info)); }
private static string GetMemoryAnalysisKey(RedisConnectionInfo connectionInfo, int database) { return(string.Format("redis-memory-analysis-{0}:{1}:{2}", connectionInfo.Host, connectionInfo.Port, database)); }