使用 StackExchange.Redis 连接到 redis 失败后事务无法正常工作

Transaction not working after unsuccessful connection to redis using StackExchange.Redis

我不确定,这是一个错误还是我做错了什么。这是代码:

        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 后,它会卡住。使用批处理而不是事务时出现同样的问题。

我连接到多路复用器是错误的还是错误? (我发现很少有看起来相似但我不确定)

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