J'ai implémenté un serveur Redis (à utiliser comme cache de données) pour une application Web (ASP.NET). L'un des objectifs de conception est de permettre à l'application Web de fonctionner normalement si le serveur Redis tombe en panne.Détection d'une connexion Redis avant la connexion
Actuellement, cela fonctionne, mais il est très très lent.
ci-dessous est un morceau de code de la classe qui traite Redis:
public string GetCachedData(string k)
{
string res = string.Empty;
if (ConfigurationManager.AppSettings.GetValues("UseMemcache")[0].ToString() == "False")
{
return res;
}
try
{
using (RedisClient rs = new RedisClient(ConfigurationManager.AppSettings.GetValues("RedisServerIP")[0].ToString()))
{
byte[] buf = rs.Get(k);
if (buf != null)
{
res = System.Text.ASCIIEncoding.UTF8.GetString(buf);
}
}
}
catch (Exception)
{
res = "";
}
return res;
}
Question:
Sur la ligne
(RedisClient rs = new RedisClient)
C'est là l'application bloquera pour longtemps avant de lancer une exception.
Comment cela peut-il être fait de telle sorte qu'il se déclenche immédiatement?
Est-ce que Redis offre ce type de fonctionnalité maintenant? Cela fait près de quatre ans. – GaTechThomas