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

时间:2015-04-24 15:18:15

标签: redis 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中的值,则会存储它们。

当我们启动服务器并忘记启动redis时会发生这种情况。在推迟redis的开始后,它会被卡住。使用批处理而不是事务时会出现同样的问题。

我是否与多路复用器连接错误或是错误? (我发现很少看起来很相似,但我不确定)

1 个答案:

答案 0 :(得分:0)

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