2015-09-22 3 views
0

Я пытался выяснить, в течение нескольких дней теперь, почему я получаю исключение, такие как http://i.imgur.com/cfCBWRS.pngServiceStack.Redis не удалось подключиться Šport

public virtual bool CreateOrUpdateValueById<T>(TQuery query, TResult value) 
{ 
    using (var redisClient = Connection.RedisManager.GetClient()) 
    { 
     var redis = redisClient.As<TResult>(); 

     var key = query.GetKeyWithId(); 
     redis.SetEntry(key, value); 

     return true; 
    } 
} 

которая проходит в цикле нескольких сот пунктов.

foreach (var playlistItem in playlistItems) 
{ 
    var query = new PlaylistItemsQuery(playlistItem.Id, playlistItem.PlaylistId); 
    _playlistItemsQueryHandler.CreateOrUpdateValueById<PlaylistItemDto>(query, playlistItem); 
} 

также происходит для любого ПОЛУЧИТЬ запрос

public virtual IEnumerable<TResult> GetAllValues(TQuery query) 
{ 
    using (var redisClient = Connection.RedisManager.GetReadOnlyClient() 
    { 
     var keys = redisClient.ScanAllKeys(query.GetKeyWithAllIds()).ToList(); 
      return redisClient.GetValues<TResult>(keys); 
    } 
} 

я использовать одноплодный класс для redispool

public static IRedisClientsManager RedisManager { get; } = new PooledRedisClientManager 
{ 
    ConnectTimeout = 60000 
}; 

Я хостинг Redis на локальном хост окна, которые официально не поддерживаются, это может быть действительно случай?

ответ

1

Сообщение об ошибке предполагает, что клиент Redis не может выполнить TCP-соединение с удаленным сервером Redis. Если вы не используете лицензионную версию ServiceStack.Redis v4, это может означать, что вы превысили ServiceStack.Redis Free Quota Limits.

В противном случае подтвердите, что вы можете подключиться к нему с redis-cli.exe, если вы не можете попробовать перезагрузить redis-сервер.

+0

Я не упоминал, что первые несколько тысяч запросов проходят просто отлично. Перезапуск службы redit не помог. – aMerkuri

+0

Я мог бы подключиться к redis-cli.exe и даже запустить redis-benchmark.exe после этого. – aMerkuri

+0

@ArturKokinArturK Ошибка говорит, что клиент не может установить TCP-соединение с сервером, это может быть вызвано загрузкой, сгенерированной «ScanAllKeys», см. Примечания к выпуску версии 4.0, которая [объясняет, как работает SCAN] (https: // github .com/ServiceStack/ServiceStack/blob/master/docs/2015/release-notes.md # улучшенная поддержка lua) и альтернатива LUA. Вы можете попробовать [увеличить лимит автозаполнения по умолчанию] (https://github.com/ServiceStack/ServiceStack.Redis/wiki/Automatic-Retries), также распечатать [Dump of RedisStats] (https://github.com/ServiceStack /ServiceStack.Redis/wiki/Redis-Stats), который может предоставить статистику здоровья – mythz

Смежные вопросы