Redis в Appharbor - исключение GetString для книжного рукава

Я пытаюсь настроить Redis на appharbor. Я выполнил их инструкции, и снова у меня проблема с API-интерфейсом Booksleeve. Вот код, который я использую, чтобы он работал изначально:

               var connectionUri = new Uri(url);

                using (var redis = new RedisConnection(connectionUri.Host, connectionUri.Port, password: connectionUri.UserInfo.Split(new[] { ':' }, 2)[1]))
                {
                    redis.Strings.Set(1, "greeting", "welcome to remember your stuff!");

                    try
                    {
                        var task = redis.Strings.GetString(1, "greeting");

                        redis.Wait(task);

                        ViewBag.Message = task.Result;
                    }
                    catch (Exception)
                    {
                        // It throws an exception trying to wait for the task?
                    }
                }

Однако проблема в том, что строка задается правильно, но при попытке получить ту же строку из хранилища значений ключа возникает исключение тайм-аута, ожидающее выполнения задачи. Однако этот код работает на моем локальном подключении к серверу Redis.

Я неправильно использую API? или это что-то связано с Appharbor?

Спасибо


person Faris Zacina    schedule 27.04.2012    source источник


Ответы (1)


Как и SqlConnection, вам нужно позвонить Open() (иначе ваши сообщения будут поставлены в очередь для доставки).

В отличие от SqlConnection, вам не следует запускать RedisConnection каждый раз, когда он вам нужен - он предназначен для использования в качестве общего, поточно-ориентированного , мультиплексор - то есть одно соединение где-то удерживается и используется множеством несвязанных абонентов. Если, конечно, вам нужно сделать только одно!

person Marc Gravell    schedule 27.04.2012
comment
Спасибо за быстрый ответ и подсказки! .. Теперь связь работает. Он выходит за очередь ожидания. но по какой-то причине в строке task.Result я получаю следующее: // Ошибка обработки данных: сбой критической операции: 1: SELECT .. это проблема с redis appharbor? .. Я могу получить данные на моем локальном сервере? - person Faris Zacina; 27.04.2012
comment
@DoubleScorpio у вас есть 2 базы данных? Базы данных начинаются с 0; если у вас только 1, используйте DB 0. - person Marc Gravell; 27.04.2012
comment
Я установил DB 0, и он работает !!! .. Спасибо за вашу помощь! .. Я просто играл с клиентом, но теперь, когда он работает, я реструктурирую свой код и создам что-то хорошее с ним :) .. Спасибо опять таки! - person Faris Zacina; 27.04.2012
comment
@DoubleScorpio - количество БД является параметром конфигурации сервера, кстати - person Marc Gravell; 27.04.2012