Я подключаюсь к Azure Redis, и они показывают мне количество открытых подключений к моему серверу redis. У меня есть следующий код C#, который охватывает все мои команды Redis и получает. Должны ли это быть утечки соединений?Redis Connections могут не закрываться с помощью C#
using (var connectionMultiplexer = ConnectionMultiplexer.Connect(connectionString))
{
lock (Locker)
{
redis = connectionMultiplexer.GetDatabase();
}
var o = CacheSerializer.Deserialize<T>(redis.StringGet(cacheKeyName));
if (o != null)
{
return o;
}
lock (Locker)
{
// get lock but release if it takes more than 60 seconds to complete to avoid deadlock if this app crashes before release
//using (redis.AcquireLock(cacheKeyName + "-lock", TimeSpan.FromSeconds(60)))
var lockKey = cacheKeyName + "-lock";
if (redis.LockTake(lockKey, Environment.MachineName, TimeSpan.FromSeconds(10)))
{
try
{
o = CacheSerializer.Deserialize<T>(redis.StringGet(cacheKeyName));
if (o == null)
{
o = func();
redis.StringSet(cacheKeyName, CacheSerializer.Serialize(o),
TimeSpan.FromSeconds(cacheTimeOutSeconds));
}
redis.LockRelease(lockKey, Environment.MachineName);
return o;
}
finally
{
redis.LockRelease(lockKey, Environment.MachineName);
}
}
return o;
}
}
}
Это то, что у меня было первоначально, и мой монитор показал 100 открытых соединений, когда я был только одним тестированием –
См. Выше. Я обновил свой ответ. –
Спасибо. Я прочитаю это и обновлю свой метод и посмотрю, смогу ли я заставить его работать. –