【问题标题】:Transaction not working after unsuccessful connection to redis using StackExchange.Redis使用 StackExchange.Redis 连接到 redis 失败后事务不工作
【发布时间】:2016-01-27 22:36:09
【问题描述】:

我不确定是错误还是我做错了什么。代码如下:

        using StackExchange.Redis;

        ConnectionMultiplexer conn = null;
        while (conn == null);
        {
            try
            {
                conn = ConnectionMultiplexer.Connect("localhost:6379");
            }
            catch (Exception)
            {
                conn = null;
                Thread.Sleep(TimeSpan.FromSeconds(5));
            }
        }

        var db = conn.GetDatabase();
        var transaction = db.CreateTransaction();

        var tasks = new List<Task>();
        tasks.Add(transaction.HashSetAsync("key", "field", "value"));
        if (transaction.Execute())
        {
            Task.WaitAll(tasks.ToArray());
        }

当我使用启动的 redis(Windows 版本 - 2.6、2.8.17、2.8.19)运行它时,一切正常。如果我在循环的几个循环后启动 redis,它要么不会跳转到 if 语句,要么会跳转并在 WaitAll() 上被阻塞。如果我尝试检查 redis 中的值,它们会被存储。

这种情况发生在我们启动server而忘记启动redis的时候。推迟redis启动后,它卡住了。使用批处理而不是事务时也会出现同样的问题。

我与多路复用器的连接是错误的还是错误? (我发现很少有类似的,但我不确定)

【问题讨论】:

  • 这表明某些代码路径中的任务未标记为已完成 - 我将不得不进行调查

标签: redis stackexchange.redis


【解决方案1】:

这是旧版本 StackExchange.Redis - 1.0.481、1.0.488 中的一个错误(未测试任何旧版本)。使用新版本 1.1.553 可以正常工作 (https://github.com/StackExchange/StackExchange.Redis/issues/200)。

【讨论】:

    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 2022-11-13
    • 2019-09-28
    • 2014-06-23
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多