我不确定,这是一个错误还是我做错了什么。这是代码:
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的开始后,它会被卡住。使用批处理而不是事务时会出现同样的问题。
我是否与多路复用器连接错误或是错误? (我发现很少看起来很相似,但我不确定)
答案 0 :(得分:0)
这是旧版StackExchange.Redis中的一个错误 - 1.0.481,1.0.488(没有测试任何旧的版本)。使用新版本1.1.553,它可以正常工作(https://github.com/StackExchange/StackExchange.Redis/issues/200)。