【问题标题】:Redis on Appharbor - Booksleeve GetString exceptionAppharbor 上的 Redis - Booksleeve GetString 异常
【发布时间】:2012-04-27 07:16:37
【问题描述】:

我正在尝试在 appharbor 上设置 Redis。我已按照他们的说明进行操作,但 Booksleeve API 再次出现问题。这是我用来使其最初工作的代码:

               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 有关?

谢谢

【问题讨论】:

    标签: redis appharbor booksleeve


    【解决方案1】:

    SqlConnection 一样,您需要致电Open()(否则您的邮件将排队等待发送)。

    不同于 SqlConnection,您不应该在每次需要时启动RedisConnection - 它旨在用于作为一个共享的、线程安全的、多路复用器 - 即单个连接被保存在某个地方并被许多不相关的调用者使用。除非你当然只需要做一件事!

    【讨论】:

    • 感谢您的快速响应和提示!..连接现在有效。它越过了等待线。但由于某种原因,在 task.Result 行我得到以下信息://错误处理数据:关键操作失败:1:SELECT ..这是一个 appharbor redis 问题吗?..我可以在我的本地服务器上获取数据吗?
    • @DoubleScorpio 你有 2 个数据库吗?数据库是从 0 开始的;如果您只有 1 个,请使用 DB 0。
    • 我设置为 DB 0 并且它可以工作!!!.. 感谢您的帮助!.. 我只是在玩客户端,但现在它可以工作了,我将重组我的代码并构建一些东西很好:).. 再次感谢!
    • @DoubleScorpio - DB 数量是服务器配置选项,顺便说一句
    猜你喜欢
    • 1970-01-01
    • 2018-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    相关资源
    最近更新 更多